包不可见错误
Package is not visible error
我试图在我的项目中使用 joptsimple 包,但出现以下错误:
Error:(4, 20) java: package jdk.internal.joptsimple is not visible
(package jdk.internal.joptsimple is declared in module jdk.internal.opt, which does not export it to the unnamed module)
我应该用它做什么?
您显然在使用内部 API,您不应该这样做。此类 API 未标准化 - 它们可能因 JVM 而异,并且可能随时更改,恕不另行通知。
也就是说,如果您仍想使用它,可以通过在编译和 运行 时添加以下命令行标志(即 javac
和 java
):
--add-exports jdk.internal.opt/jdk.internal.joptsimple=ALL-UNNAMED
如果您要创建模块,则必须将 ALL-UNNAMED
替换为您的模块名称。
好吧,消息清楚地显示(实际上请注意 JDK 开发人员的漂亮命名约定“internal”,这意味着他们不想公开它们)您尝试访问的 API 位于一个包中,该包未导出到除这些以外的任何其他模块 -
exports jdk.internal.joptsimple to jdk.jlink, jdk.jshell
即使您在声明中添加 requires jdk.internal.opt
模块。
应避免使用这些包中的 类。
此外,即使 Open JDK itself integrates JOpt Simple for internal usage by JDK tools. I would suggest you make use of the library jopt-simple
通过添加对模块路径(java9)或类路径(java8) 使用 -
行家 -
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>6.0-alpha-2</version>
</dependency>
Gradle:-
compile 'net.sf.jopt-simple:jopt-simple:6.0-alpha-2'
在你的 类 中使用的包名称包含后应该简单地是 joptsimple.*
而不是 jdk.internal.joptsimple.*
.
我试图在我的项目中使用 joptsimple 包,但出现以下错误:
Error:(4, 20) java: package jdk.internal.joptsimple is not visible
(package jdk.internal.joptsimple is declared in module jdk.internal.opt, which does not export it to the unnamed module)
我应该用它做什么?
您显然在使用内部 API,您不应该这样做。此类 API 未标准化 - 它们可能因 JVM 而异,并且可能随时更改,恕不另行通知。
也就是说,如果您仍想使用它,可以通过在编译和 运行 时添加以下命令行标志(即 javac
和 java
):
--add-exports jdk.internal.opt/jdk.internal.joptsimple=ALL-UNNAMED
如果您要创建模块,则必须将 ALL-UNNAMED
替换为您的模块名称。
好吧,消息清楚地显示(实际上请注意 JDK 开发人员的漂亮命名约定“internal”,这意味着他们不想公开它们)您尝试访问的 API 位于一个包中,该包未导出到除这些以外的任何其他模块 -
exports jdk.internal.joptsimple to jdk.jlink, jdk.jshell
即使您在声明中添加 requires jdk.internal.opt
模块。
应避免使用这些包中的 类。
此外,即使 Open JDK itself integrates JOpt Simple for internal usage by JDK tools. I would suggest you make use of the library jopt-simple
通过添加对模块路径(java9)或类路径(java8) 使用 -
行家 -
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>6.0-alpha-2</version>
</dependency>
Gradle:-
compile 'net.sf.jopt-simple:jopt-simple:6.0-alpha-2'
在你的 类 中使用的包名称包含后应该简单地是 joptsimple.*
而不是 .jdk.internal.joptsimple.*