Java 11 JLink获取错误:自动模块无法与文件中的JLink:com.microsoft.sqlserver.jdbc一起使用

Java 11 JLink获取错误:自动模块无法与文件中的JLink:com.microsoft.sqlserver.jdbc一起使用,java,jdbc,jlink,Java,Jdbc,Jlink,我正试图用Java11将JDBC连接器模块添加到我的项目中。我下载了适用于Java11的MSSQLServerJDBC驱动程序7.2 我添加了模块: requires com.microsoft.sqlserver.jdbc; 然而,当我尝试清理+构建时,NetBeans告诉我: Error: automatic module cannot be used with jlink: com.microsoft.sqlserver.jdbc from file: /sqljdbc_7.2/enu

我正试图用Java11将JDBC连接器模块添加到我的项目中。我下载了适用于Java11的MSSQLServerJDBC驱动程序7.2

我添加了模块:

requires com.microsoft.sqlserver.jdbc;
然而,当我尝试清理+构建时,NetBeans告诉我:

Error: automatic module cannot be used with jlink: com.microsoft.sqlserver.jdbc from file: /sqljdbc_7.2/enu/mssql-jdbc-7.2.2.jre11.jar

我很确定这是因为jar没有编译的
模块info.java
。然而,我想知道是否有一种方法可以在那里注射

然后可以使用
jdeps
生成
module info.java
文件。然后您只需要将
module info.class
添加到JAR文件中,我相信。@Slaw这真是一件痛苦的事。还有很多依赖项也需要模块化。。。有没有一种方法可以使用jlink创建自定义运行时,但在运行时外部包含额外的遗留jar?而不是使用
jlink
。如果您使用的是Maven,那么您可能可以使用。看起来他们也为格拉德准备了。您也可以尝试,尽管它目前还处于早期访问阶段,并且基于JDK13。根据我使用该工具的一次经验,它允许您混合使用modulepath/classpath或显式/自动模块。但是,与
jlink
不同,
jpackage
工具对跨平台打包提供零支持。请注意,当我说“混合模块路径/类路径或显式/自动模块”时,我的真正意思是要么。如果您的代码是模块化的,并且希望在modulepath上使用它,那么所有内容都需要在modulepath上。这是因为显式模块无权访问类路径(即“未命名模块”)。然而,modulepath上的依赖项不必是显式模块;它们可以是自动模块。如果你的代码是非模块化的,那么你可以在modulepath上有东西,在classpath上有你的代码(不过你可能必须使用
——addmodules
)。我认为不可能找到任何没有自动模块名的模块的严肃项目,例如spring有它们。因此,jlink只能用于创建自定义jre,而不能用于链接项目模块。