2009-09-04 9 views
2

Création d'une application Java pour télécharger des documents via CIS (Content Integration Suite) vers une application de stockage. L'application s'exécute avec succès dans RAD, mais comme un fichier exécutable dans un environnement Unix, obtenir une NoClassDefFoundError. Je ne trouve pas la classe sur ma machine locale et il n'y a pas de références à la classe sur internet. Le manifeste contient ce chemin de classe pour les fichiers jar requis et la classe principale.Application Java NoClassDefFoundError

Quelqu'un peut-il aider?

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 

Mise à jour: Je n'ai qu'un seul fichier jar traitant de CIS. J'ai regardé dans le pot et il n'y a pas de classe à l'intérieur. Je ne suis pas familier avec les autres classes par défaut de RAD qui ont des classes CIS. Cela ne se produit pas seulement pour cette classe, mais aussi pour une classe contenue dans webservices.jar. Je peux voir la classe et cela fait partie de mon chemin de classe parce que quand j'enlève le Jar du chemin, il se plaint d'une autre classe manquante. Quand je le replace sur mon chemin, il va plus loin dans le programme et donne la même erreur.

Répondre

0

Le problème a été provoqué par les autorisations sur le répertoire tmp sous UNIX. L'API CIS utilise le répertoire tmp pour créer et stocker les fichiers/classes nécessaires à l'exécution. Parce que je courais le processus sous mon propre ID, il était incapable d'accéder aux fichiers tmp qui ont été créés par le wsadmin. Pour résoudre le problème, le processus doit être exécuté en tant que wsadmin.

0

La classe manquante est probablement dans un fichier JAR installé sur votre machine locale et non sur la machine distante. Ou plus probablement - il est installé dans la machine de suppression dans un emplacement différent puis dans votre machine locale (ce qui est attendu si la machine distante est une machine Unix et votre locale est une boîte Windows). Le chemin de classe défini dans le fichier MANIFEST.MF dans le fichier JAR que vous créez doit spécifier le chemin de classe pour trouver tous les fichiers JAR associés sur l'ordinateur distant. Vous devez trouver l'emplacement d'installation de ce JAR, puis ajouter ce chemin au manifeste. classpath. Les fichiers JAR dans les machines Unix sont souvent installés dans/usr/share/java mais je ne peux pas vous en dire plus car je ne suis pas familier avec CIS et je ne sais pas quels sont les fichiers JAR qu'il distribue normalement.

Questions connexes