2009-09-04 92 views
2

創建Java應用程序以通過CIS(Content Integration Suite)將文件上載到存儲應用程序。該應用程序在RAD中成功運行,但作爲unix環境中的可執行jar獲取NoClassDefFoundError。我無法在我的本地機器上找到該課程,並且在互聯網上沒有提及該課程。Java應用程序NoClassDefFoundError

清單包含所需jar文件和主類的類路徑。

任何人都可以幫忙嗎?

Fri Sep 04 16:47:25 EDT 2009 : StandardBatchApplication startup() completed. 
java.lang.NoClassDefFoundError: com.stellent.cis.support.spring.ResourceHelper 
     at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF 
     at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF 
     at com.stellent.cis.common.classloader.IsolatedJarClassLoader$TemporaryF 
     at com.stellent.cis.common.classloader.IsolatedJarClassLoader.<clinit>(I 
     at java.lang.J9VMInternals.initializeImpl(Native Method) 
     at java.lang.J9VMInternals.initialize(J9VMInternals.java:196) 
     at com.stellent.cis.impl.CISApplicationFactory.getCisClassloader(CISAppl 
     at com.stellent.cis.impl.CISApplicationFactory.getCisApplication(CISAppl 
     at com.stellent.cis.impl.CISApplicationFactory.initialize(CISApplication 
     at com.lowes.ipt.edi.processor.CISApp.initialize(CISApp.java:48) 
     at com.lowes.ipt.edi.processor.EDItoEDAMUploadProcessor.main(EDItoEDAMUp 
Caused by: java.lang.ClassNotFoundException: com.stellent.cis.support.spring.Res 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:496) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:631) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:597) 
     ... 11 more 

更新:我只有一個jar文件涉及CIS。我看了看瓶子裏面沒有課。我不熟悉任何其他具有CIS類的RAD默認類。這不僅發生在這個類中,而且也發生在webservices.jar中的類中。我可以看到這個類,它是我班級路徑的一部分,因爲當我從路徑中移除Jar時,它會抱怨另一個缺失的類。當我把它放回到我的路徑中時,它會在程序中更進一步,並且會出現相同的錯誤。

回答

0

該問題是由UNIX中tmp目錄的權限引起的。 CIS API使用tmp目錄創建並存儲需要執行的文件/類。因爲我在自己的ID下運行該進程,所以無法訪問由wsadmin創建的tmp文件。要解決該問題,該進程必須作爲wsadmin運行。

0

缺少的類可能是在本地機器上安裝的某些JAR文件中,而不是在遠程機器上。或者更有可能 - 它被安裝在本地機器的不同位置的移除機器中(如果遠程機器是Unix機器而本地機器是Windows機器,則可以這麼做)。

在您構建的JAR的MANIFEST.MF文件中設置的類路徑必須指定用於在遠程計算機上查找所有相關JAR的類路徑 - 您必須找到該JAR的安裝位置,然後將該路徑添加到清單類路徑。 Unix機器上的JAR通常安裝在/ usr/share/java中,但我不能告訴你更多,因爲我不熟悉CIS,我不知道它通常分發哪些JAR文件。

相關問題