我试图在我的项目中使用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)
任何想法我该怎么办?
答案 0 :(得分:6)
嗯,该消息清楚地显示(实际上注意到JDK开发人员的美丽命名惯例&#34; 内部&#34;意味着他们不想暴露他们)您尝试访问的API位于未导出到除< - p>之外的任何其他模块的程序包中
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. ,我建议您通过添加依赖项来使用库 jopt-simple
作为长期解决方案使用 -
Maven -
<dependency>
<groupId>net.sf.jopt-simple</groupId>
<artifactId>jopt-simple</artifactId>
<version>6.0-alpha-2</version>
</dependency>
摇篮: -
compile 'net.sf.jopt-simple:jopt-simple:6.0-alpha-2'
包含在您的课程中使用的包名称后,只需 joptsimple.*
而不是 。jdk.internal.joptsimple.*
答案 1 :(得分:2)
您显然使用的是内部API,您不应该这样做。此类API不是标准化的 - 它们可能因JVM而异,并且可能随时更改,恕不另行通知。
也就是说,如果您仍想使用它,可以在编译和运行时添加以下命令行标志(即javac
和java
):
--add-exports jdk.internal.opt/jdk.internal.joptsimple=ALL-UNNAMED
如果您要创建模块,可以用模块名称替换ALL-UNNAMED
。