gpt4 book ai didi

java - WildFly + java首选项在类路径中找不到自定义首选项类

转载 作者:行者123 更新时间:2023-11-30 02:51:06 26 4
gpt4 key购买 nike

我正在将具有以下结构的 EAR 部署到 Wildfly 9.0.2

my.ear  
|-my.sar (it is a SAR archive)
|-lib
|-myPreferencesImpl.jar

我可以直接从 my.sar 加载 lib/myPreferencesImpl.jar 中的类(例如 class.forname(com.my.PreferencesFactory) )。但是, java.util.prefs.Preferences.factory 无法加载com.my.PreferencesFactory。我在 WildFly 启动期间将 Djava.util.prefs.PreferencesFactory=com.my.PreferencesFactory 作为命令行参数传递。

下面是抛出的异常。

 Caused by: java.lang.ClassNotFoundException: com.my.PreferencesFactory from [Module "org.jboss.as.jmx:main" from local module loader @76a3e297 (finder: local module finder @4d3167f4 (roots: /CSA_wildfly/wildfly/modules,/CSA_wildfly/wildfly/modules/system/layers/base))]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455)
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404)
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385)
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at java.util.prefs.Preferences.factory(Preferences.java:254)

请帮我解决这个问题。

更新:
我最终通过将使用 JMX 服务的启动服务迁移到 @Singleton + @Startup EJB 来修复。无需进行其他更改。

最佳答案

当您在命令行中传递参数 Djava.util.prefs.PreferencesFactory=com.my.PreferencesFactory 时,Wildfly 将在提供的可用类中查找该类通过modules 。在 Wildfly 启动期间,它甚至不会知道存在具有该类的应用程序,也无法为同一容器上的其他部署提供相同的类。因此,如果您希望命令行 arg 正常工作,请确保 deploy the Factory implementation as a Wildfly module .

关于java - WildFly + java首选项在类路径中找不到自定义首选项类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38629972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com