我用下面的結構部署EAR定製的喜好類Wildfly 9.0.2WildFly + Java首找不到類路徑
my.ear
|-my.sar (it is a SAR archive)
|-lib
|-myPreferencesImpl.jar
我能夠/ myPreferencesImpl.jar從加載lib中的類我(比如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)
請幫我解決這個問題。
UPDATE:
我終於通過遷移使用JMX服務爲@辛格爾頓+ @Startup EJB啓動服務固定。沒有其他更改是必需的。
正在調用'java.util.prefs.PreferencesFactory'來實例化'com.my.PreferencesFactory'的應用程序(my.sar)。這發生在Wildfly啓動之後。那麼爲什麼這不起作用呢? –
直到'java.util.prefs.Preferences'被初始化,它才被設置。所以它應該工作。但是,其他部署或任何服務器依賴性都無法使用首選項API,因此它必須位於模塊中。在這種情況下,JMX試圖使用首選項API,但不能。 –
@ JamesR.Perkins你應該發佈這個答案。 –