相关疑难解决方法(0)

如何将模块声明注入JAR?

假设我有一些lib.jar我没有源代码的库(或者它是用一些不熟悉模块的非Java语言编写的).lib.jar没有module-info.class,我不想将它用作自动模块,所以我想注入module-info.class它.

我首先module-info.java使用以下命令生成:

jdeps --generate-module-info . lib.jar
Run Code Online (Sandbox Code Playgroud)

假设这产生了类似的东西:

module lib {
    exports package1;
    exports package2;
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试编译它但javac失败因为包package1而且package2不存在:

> javac module-info.java
module-info.java:4: error: package is empty or does not exist: package1
Run Code Online (Sandbox Code Playgroud)

当然,我可以在其中创建目录package1package2虚拟类,但是有更好的方法吗?

java java-9 java-module module-info

13
推荐指数
2
解决办法
2251
查看次数

将jlink与自动模块一起使用

具有依赖于自动模块的显式模块化项目,例如,依赖于java.activation。仍然可以使用jlink吗?

请参阅以下module-info.java:

module hello {
    requires java.activation;
}
Run Code Online (Sandbox Code Playgroud)

然后,Jlink无法添加模块:

$ jlink --module-path target/modules --add-modules hello --output target/jlink
Error: automatic module cannot be used with jlink: java.activation from file:///C:/Development/jlinkExample/target/modules/javax.activation-api-1.2.0.jar
Run Code Online (Sandbox Code Playgroud)

根据我的理解,自动模块无论如何都将包含整个类路径,所以我猜想用jlink创建运行时映像没有好处吗?另请参阅:什么是自动模块?

有没有可能解决这个问题的方法,也许为那些依赖项生成一个模块信息?

java jlink java-platform-module-system

8
推荐指数
1
解决办法
2108
查看次数

有没有办法在使用maven-jlink-plugin时添加maven依赖项?

我正在使用这个Github项目来接触Java 9中的新模块化功能.我想为项目添加依赖项并能够构建本机映像.但是,当我尝试向pom.xml添加新的依赖项,并将requires语句添加到module-info.java时,我从maven-jlink-plugin中收到以下错误:

Error: module-info.class not found for joda.time module
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用它作为概念证明,我可以使用新的链接阶段部署图像,但自然我需要能够具有外部依赖性,我需要使用maven(工作约束).

对mod-jar/pom.xml的更改

...
 <dependencies>
    <dependency>
      <groupId>joda-time</groupId>
      <artifactId>joda-time</artifactId>
      <version>2.9.9</version>
    </dependency>
  </dependencies>
...
Run Code Online (Sandbox Code Playgroud)

MOD-罐/ module-info.java

module com.soebes.nine.jar {
  requires java.base;
  requires joda.time;
  exports com.soebes.example.nine.jar;
}
Run Code Online (Sandbox Code Playgroud)

日志:

[INFO] --- maven-jlink-plugin:3.0.0-alpha-1:jlink (default-jlink) @ mod-jlink ---
[INFO] Toolchain in maven-jlink-plugin: jlink [ /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home/bin/jlink ]
[INFO] The following dependencies will be linked into the runtime image:
[INFO]  -> module: com.soebes.nine.one ( /Users/sebastianrestrepo/Projects/jdk9-jlink-jmod-example/maven-example/mod-1/target/jmods/com.soebes.nine.one.jmod )
[INFO]  -> module: com.soebes.nine.two ( /Users/sebastianrestrepo/Projects/jdk9-jlink-jmod-example/maven-example/mod-2/target/jmods/com.soebes.nine.two.jmod )
[INFO]  -> module: com.soebes.nine.jar ( …
Run Code Online (Sandbox Code Playgroud)

java jodatime jlink maven java-9

5
推荐指数
2
解决办法
2190
查看次数