找不到自己的模块时如何jlink?

问题描述

我有这样的目录结构:

测试链接

-src

--module-info.java

--com

---公司

----TestJLink

-----TestJLink.java

我运行这个 jlink --module-path src --add-modules com.company.TestJLink --output outputJRE

我收到错误:找不到模块 com.company.TestJlink

我的module-info.java的内容是这样的:

module com.company.TestJlink {
        
  requires java.desktop;
    
  requires com.microsoft.sqlserver.jdbc;
        
  requires java.sql;
        
  requires sshj;
    
}

我的 TestJLink.java 包含这个

package com.company.TestJLink;
imports ...
public class TestJLink {
    TestJlink(){}
...
}

我使用的是 Java 11

我可以使用它来构建它: java -p C:\Users\Administrator...\target\classes;C:\Users\Administrator.m2\repository\com\microsoft\sqlserver\mssql-jdbc\8.4.1.jre11\mssql-jdbc-8.4. 1.jre11.jar;C:\Users\Administrator.m2\repository\com\hierynomus\sshj\0.27.0\sshj-0.27.0.jar;C:\Users\Administrator.m2\repository\org\bouncycastle\ bcprov-jdk15on\1.60\bcprov-jdk15on-1.60.jar;C:\Users\Administrator.m2\repository\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar\Administrator\Administrator;C: m2\repository\com\jcraft\jzlib\1.1.3\jzlib-1.1.3.jar;C:\Users\Administrator.m2\repository\net\i2p\crypto\eddsa\0.2.0\eddsa-0.2.0 .jar;C:\Users\Administrator.m2\repository\org\slf4j\slf4j-api\1.7.5\slf4j-api-1.7.5.jar;C:\Users\Administrator.m2\repository\org\slf4j \slf4j-log4j12\1.7.5\slf4j-log4j12-1.7.5.jar;C:\Users\Administrator.m2\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar -m com.company .TestJLink/com.company.TestJLink.TestJLink

解决方法

首先执行 javac 解决了这个问题,我也遇到了问题。 我找到的解决方案只是将其添加到 javac src\module-info.java src\com\company\TestJLink\TestJLink.java

的末尾

编译完成后,我就可以jlink了。我之前使用 jlink 遇到的问题是我引用的是 src,而不是编译的 .class 文件。

jlink --module-path --output testjre --add-modules com.company.TestJLink -p ...来自 maven jars 等的任何其他依赖项

现在我收到这个错误,错误:自动模块不能与 jlink 一起使用。这应该很有趣,但它与我的 Maven 依赖关系有关,而不是实际示例。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...