如何解决jdk9的模块化问题

qq_40688267 2017-11-01 09:39:04
我想使用JDK9:jrt-fs.jar下的java.desktop模块下的com.sun.java.swing.plaf.windows.*包中的类,但是因为被jdk9封装了,无法访问。我该怎么解决呢?
在网上搜到的解决方法如下:
========================================================================================
You can pass VM flags through jmod using a -J prefix, so -J-XaddExports:... (this goes for a few of the different JDK tools).

Also note that the format for addExports recently changed so that it takes a module/package=comma-separated list of modules, so -XaddExports:java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED,java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED will have to be written using two exports: -XaddExports:java.xml/com.sun.org.apache.xerces.internal.parsers=ALL-UNNAMED -XaddExports:java.xml/com.sun.org.apache.xerces.internal.util=ALL-UNNAMED
========================================================================================
但是不会使用-XaddExports。请问怎么执行呢?
...全文
793 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_40688267 2017-11-08
  • 打赏
  • 举报
回复
经过自己的一番调查,这个问题我已经解决了。 jdk9将所有的类都进行了模块封装,有一些类变成了自己的私有类,外部是没有权限访问的。看一下错误信息就知道了: Exception in thread "AWT-EventQueue-2" java.lang.IllegalAccessError: superclass access check failed: class com.fujitsu.iLiswave.bas.WaveTextFieldUI (in unnamed module @0x78c8753d) cannot access class com.sun.java.swing.plaf.windows.WindowsTextFieldUI (in module java.desktop) because module java.desktop does not export com.sun.java.swing.plaf.windows to unnamed module @0x78c8753d 所以我们需要用--add-exports来导出你要用的私有类。语法: --add-exports <module>/<package>=<target-module>(,<target-module>)* ,自己可以用java -X来看一下。 首先解决编译错误,我用的是ant,创建一个build.xml,然后追加<compilerarg value="--add-exports=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED"/>,然后用ant -buildfile build.xml 就可以进行编译了。 编译成功后就该解决运行时的错误了。 我是在JNLP文件里进行了修正: <j2se version="9" href="http://java.sun.com/products/autodl/j2se" max-heap-size="128M" java-vm-args="--add-exports=java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED" /> 然后就可以运行了。我用的tomcat,能正常运行。

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧