Java 如何为这些资源添加“导出”或“打开”,以便其他模块可以加载它们?

Java 如何为这些资源添加“导出”或“打开”,以便其他模块可以加载它们?,java,java-9,java-module,Java,Java 9,Java Module,我正在为的编写一个module info.java,org.kordamp.ikonli.fontawesome5。该jar有一些需要访问的资源: 如何为这些资源添加导出或打开,以便其他模块可以加载它们?我试过: exports fonts; 及 及 但当我链接整个应用程序时,它们都会抛出相同的错误: Error reading module: C:\Users\pupeno\Documents\Dashman\code\dashman\target\modules\ikonli-fontaw

我正在为的编写一个
module info.java
org.kordamp.ikonli.fontawesome5
。该jar有一些需要访问的资源:

如何为这些资源添加
导出
打开
,以便其他模块可以加载它们?我试过:

exports fonts;

但当我链接整个应用程序时,它们都会抛出相同的错误:

Error reading module: C:\Users\pupeno\Documents\Dashman\code\dashman\target\modules\ikonli-fontawesome5-pack-2.3.0.jar
导出这些资源的正确语法是什么

以下是该jar中的模块:

>java -p target\modules\ikonli-fontawesome5-pack-2.3.0.jar --list-modules
java.activation@10.0.1
java.base@10.0.1
java.compiler@10.0.1
java.corba@10.0.1
java.datatransfer@10.0.1
java.desktop@10.0.1
java.instrument@10.0.1
java.jnlp@10.0.1
java.logging@10.0.1
java.management@10.0.1
java.management.rmi@10.0.1
java.naming@10.0.1
java.prefs@10.0.1
java.rmi@10.0.1
java.scripting@10.0.1
java.se@10.0.1
java.se.ee@10.0.1
java.security.jgss@10.0.1
java.security.sasl@10.0.1
java.smartcardio@10.0.1
java.sql@10.0.1
java.sql.rowset@10.0.1
java.transaction@10.0.1
java.xml@10.0.1
java.xml.bind@10.0.1
java.xml.crypto@10.0.1
java.xml.ws@10.0.1
java.xml.ws.annotation@10.0.1
javafx.base@10.0.1
javafx.controls@10.0.1
javafx.deploy@10.0.1
javafx.fxml@10.0.1
javafx.graphics@10.0.1
javafx.media@10.0.1
javafx.swing@10.0.1
javafx.web@10.0.1
jdk.accessibility@10.0.1
jdk.charsets@10.0.1
jdk.crypto.cryptoki@10.0.1
jdk.crypto.ec@10.0.1
jdk.crypto.mscapi@10.0.1
jdk.deploy@10.0.1
jdk.deploy.controlpanel@10.0.1
jdk.dynalink@10.0.1
jdk.httpserver@10.0.1
jdk.incubator.httpclient@10.0.1
jdk.internal.ed@10.0.1
jdk.internal.le@10.0.1
jdk.internal.vm.ci@10.0.1
jdk.internal.vm.compiler@10.0.1
jdk.internal.vm.compiler.management@10.0.1
jdk.javaws@10.0.1
jdk.jdwp.agent@10.0.1
jdk.jfr@10.0.1
jdk.jsobject@10.0.1
jdk.localedata@10.0.1
jdk.management@10.0.1
jdk.management.agent@10.0.1
jdk.management.cmm@10.0.1
jdk.management.jfr@10.0.1
jdk.management.resource@10.0.1
jdk.naming.dns@10.0.1
jdk.naming.rmi@10.0.1
jdk.net@10.0.1
jdk.pack@10.0.1
jdk.plugin@10.0.1
jdk.plugin.server@10.0.1
jdk.scripting.nashorn@10.0.1
jdk.scripting.nashorn.shell@10.0.1
jdk.sctp@10.0.1
jdk.security.auth@10.0.1
jdk.security.jgss@10.0.1
jdk.snmp@10.0.1
jdk.unsupported@10.0.1
jdk.xml.dom@10.0.1
jdk.zipfs@10.0.1
oracle.desktop@10.0.1
oracle.net@10.0.1
org.kordamp.ikonli.fontawesome5@2.3.0 file:///C:/Users/pupeno/Documents/Dashman/code/dashman/target/modules/ikonli-fontawesome5-pack-2.3.0.jar
我试图解决的例外是:

Caused by: java.lang.UnsupportedOperationException: Cannot resolve 'fas-user'
        at org.kordamp.ikonli.javafx@2.3.0/org.kordamp.ikonli.javafx.IkonResolver.resolveIkonHandler(IkonResolver.java:60)
        at org.kordamp.ikonli.javafx@2.3.0/org.kordamp.ikonli.javafx.FontIcon.setIconLiteral(FontIcon.java:252)
        ... 41 more

Ikonli有一种动态加载图标的方法,当我尝试加载
fas用户时,它找不到它。

如果字体是META-INF格式的,那么你不需要做任何事情。其他模块中的代码可以使用GetResourcesxxAPI来定位它们。您需要为“错误读取模块”错误提供更多的上下文,因为不清楚这是从哪里来的。@AlanBateman:我很抱歉。我忘记添加在运行jlink时发生的错误。这几乎是我所能得到的。jlink不太擅长给出错误。ikonli-fontawesome5-pack-2.3.0.jar肯定有问题。
java-pikonli-fontawesome5-pack-2.3.0.jar——列出模块说什么?至于jlink检测到的错误,那么在JDK 10和JDK 11中这已经得到了改进。它也可以使用未记录/不支持的-J-Djlink.debug=true运行,以调试在输入错误时发生故障的情况。@AlanBateman:我已经在使用JDK 10了。我将该命令的输出添加到问题中。@AlanBateman:我得到了ikonli的源代码并开始使用它。我认为问题在于服务提供商没有被加载,因此,它会无声地失败。为了避免混淆这个问题,我将发布一个不同的问题。我认为这个问题的正确答案是,这些文件不需要任何导出即可访问。
module org.kordamp.ikonli.fontawesome5 {
    exports org.kordamp.ikonli.fontawesome5;
    provides org.kordamp.ikonli.IkonHandler with org.kordamp.ikonli.fontawesome5.FontAwesomeBrandsIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeRegularIkonHandler, org.kordamp.ikonli.fontawesome5.FontAwesomeSolidIkonHandler;
}
>java -p target\modules\ikonli-fontawesome5-pack-2.3.0.jar --list-modules
java.activation@10.0.1
java.base@10.0.1
java.compiler@10.0.1
java.corba@10.0.1
java.datatransfer@10.0.1
java.desktop@10.0.1
java.instrument@10.0.1
java.jnlp@10.0.1
java.logging@10.0.1
java.management@10.0.1
java.management.rmi@10.0.1
java.naming@10.0.1
java.prefs@10.0.1
java.rmi@10.0.1
java.scripting@10.0.1
java.se@10.0.1
java.se.ee@10.0.1
java.security.jgss@10.0.1
java.security.sasl@10.0.1
java.smartcardio@10.0.1
java.sql@10.0.1
java.sql.rowset@10.0.1
java.transaction@10.0.1
java.xml@10.0.1
java.xml.bind@10.0.1
java.xml.crypto@10.0.1
java.xml.ws@10.0.1
java.xml.ws.annotation@10.0.1
javafx.base@10.0.1
javafx.controls@10.0.1
javafx.deploy@10.0.1
javafx.fxml@10.0.1
javafx.graphics@10.0.1
javafx.media@10.0.1
javafx.swing@10.0.1
javafx.web@10.0.1
jdk.accessibility@10.0.1
jdk.charsets@10.0.1
jdk.crypto.cryptoki@10.0.1
jdk.crypto.ec@10.0.1
jdk.crypto.mscapi@10.0.1
jdk.deploy@10.0.1
jdk.deploy.controlpanel@10.0.1
jdk.dynalink@10.0.1
jdk.httpserver@10.0.1
jdk.incubator.httpclient@10.0.1
jdk.internal.ed@10.0.1
jdk.internal.le@10.0.1
jdk.internal.vm.ci@10.0.1
jdk.internal.vm.compiler@10.0.1
jdk.internal.vm.compiler.management@10.0.1
jdk.javaws@10.0.1
jdk.jdwp.agent@10.0.1
jdk.jfr@10.0.1
jdk.jsobject@10.0.1
jdk.localedata@10.0.1
jdk.management@10.0.1
jdk.management.agent@10.0.1
jdk.management.cmm@10.0.1
jdk.management.jfr@10.0.1
jdk.management.resource@10.0.1
jdk.naming.dns@10.0.1
jdk.naming.rmi@10.0.1
jdk.net@10.0.1
jdk.pack@10.0.1
jdk.plugin@10.0.1
jdk.plugin.server@10.0.1
jdk.scripting.nashorn@10.0.1
jdk.scripting.nashorn.shell@10.0.1
jdk.sctp@10.0.1
jdk.security.auth@10.0.1
jdk.security.jgss@10.0.1
jdk.snmp@10.0.1
jdk.unsupported@10.0.1
jdk.xml.dom@10.0.1
jdk.zipfs@10.0.1
oracle.desktop@10.0.1
oracle.net@10.0.1
org.kordamp.ikonli.fontawesome5@2.3.0 file:///C:/Users/pupeno/Documents/Dashman/code/dashman/target/modules/ikonli-fontawesome5-pack-2.3.0.jar
Caused by: java.lang.UnsupportedOperationException: Cannot resolve 'fas-user'
        at org.kordamp.ikonli.javafx@2.3.0/org.kordamp.ikonli.javafx.IkonResolver.resolveIkonHandler(IkonResolver.java:60)
        at org.kordamp.ikonli.javafx@2.3.0/org.kordamp.ikonli.javafx.FontIcon.setIconLiteral(FontIcon.java:252)
        ... 41 more