美文网首页
java模块化五个重要的命令

java模块化五个重要的命令

作者: 何德何能者 | 来源:发表于2019-08-09 16:20 被阅读0次

    java mods
    java模块系统的五个关键指令

    --add-exports 访问内部API

    如果旧代码迁移到JDK9+, 编译报package x.x.x is not visible 的错误时,是因为旧代码访问了模块的内部API;为了能够访问内部API,需要在编译时加上
    --add-exports java.xx/x.x.x=ALL-UNNAMED

    --add-open 反射访问内部API

    但是,这种方式只是在编译期起作用;那些在x在运行时才知道访问了内部API的问题需要新的方式解决; 错误异常通常是 java.lang.reflect.InaccessibleObjectException..
    解决方式是运行时加上
    --add-opens x.x/x.x.x=All-UNNAMED
    特别时那些通过反射调用的类和方法;

    --add-modules 添加依赖模块

    如,项目依赖Java EE的相关xml代码, 编译和运行时就需要添加对应的模块
    javac --add-moudles java.xml.bind

    --patch-modules指定到特定模块

    迁移过程中讨论拆包装,我们看到了一个使用注释的项目的例子 @ 生成(从java.xml.ws.annotation模块)和 @ 非空(从JSR 305实现)。我们发现了三件事:

    • 两个注释都在 javax .annotation包中,因此创建了一个分割
    • 我们需要手动添加模块,因为它是一个Java EE模块
    • 这样做会使拆分包的JSR 305部分不可见
      我们可以使用 --patch-module来修补分割:
    java
        --add-modules java.xml.ws.annotation
        --patch-module java.xml.ws.annotation=jsr305-3.0.2.jar
        --class-path $dependencies
        -jar $appjar
    
    --add-reads 模块读取另一个模块

    五个重要的命令

    相关文章

      网友评论

          本文标题:java模块化五个重要的命令

          本文链接:https://www.haomeiwen.com/subject/cdehjctx.html