2009-09-04 9 views
2

Создал приложение Java для загрузки документов через CIS (Content Integration Suite) в приложение хранения. Приложение успешно запускается в RAD, но как исполняемый банкомат в среде unix, получает 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, который у меня есть, который касается СНГ. Я посмотрел в банку, и внутри не было класса. Я не знаком с другими классами класса RAD, которые имеют классы CIS. Это происходит не только для этого класса, но и для класса, содержащегося в webservices.jar. Я вижу класс, и это часть моего пути к классу, потому что, когда я удаляю Jar из пути, он жалуется на другой отсутствующий класс. Когда я помещаю его обратно в свой путь, он переходит в программу и дает ту же ошибку.

ответ

0

Проблема была вызвана разрешениями на каталог tmp в UNIX. API CIS использует каталог tmp для создания и хранения необходимых файлов/классов для выполнения. Поскольку я выполнял этот процесс под своим собственным идентификатором, он не смог получить доступ к файлам tmp, которые были созданы wsadmin. Чтобы решить проблему, процесс должен запускаться как wsadmin.

0

Отсутствующий класс, вероятно, находится в некотором JAR-файле, который установлен на вашем локальном компьютере, а не на удаленной машине. Скорее всего, он установлен на машине удаления в другом месте, а затем на вашем локальном компьютере (что ожидается, если удаленный компьютер - это машина Unix, а локальная - это окно Windows).

Путь к классам, установленный в файле MANIFEST.MF в JAR, который вы создаете, должен указывать путь к классам для нахождения всех связанных JAR на удаленном компьютере - вам нужно найти, где этот JAR установлен, и затем добавить этот путь к манифесту CLASSPATH. JARs на машинах Unix часто устанавливаются в/usr/share/java, но я не могу сказать вам больше, потому что я не знаком с CIS, и я не знаю, какие файлы JAR обычно распространяются.

Смежные вопросы