2010-02-21 3 views
1

Je suis relativement nouveau dans Java et les services Web, donc cela doit être quelque chose d'évident. Très probablement quelque chose avec classpath. Mes fichiers de classe se trouvent dans le répertoire 'src/ibmwebservicetutorial/service /' relatif au répertoire courant. Une idée de ce que je fais mal?Erreur "java.lang.NoClassDefFoundError: IllegalName" lors de la génération d'artefacts JAX-WS à l'aide de wsgen

wsgen -classpath . src/ibmwebservicetutorial/service/OrderProcessService -wsdl 

Exception in thread "main" java.lang.NoClassDefFoundError: IllegalName: src/ibmwebservicetutorial/service/OrderProcessService 
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:477) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:56) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:195) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:252) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.getClass(WsgenOptions.java:276) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.validateEndpointClass(WsgenOptions.java:212) 
at com.sun.tools.internal.ws.wscompile.WsgenOptions.validate(WsgenOptions.java:203) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:105) 
at com.sun.tools.internal.ws.WsGen.main(WsGen.java:41) 

Répondre

1

L'erreur vous indique qu'il veut un nom de classe légal. Vous lui avez donné un chemin source. Vous avez besoin de quelque chose qui ressemble à un nom de classe complet (par exemple, "x.y.z.Foo").

Vérifiez la docs, et essayez d'exécuter comme ceci:

wsgen -wsdl -classpath . service.OrderProcessService

Je pense que wsgen fonctionne sur les fichiers .class, pas .java. Assurez-vous que vous avez compilé vos fichiers source avant de l'exécuter.

+0

Eh oui, j'ai compilé les fichiers et les fichiers de classe sont dans le même répertoire que les fichiers .java. – NewbieToJava

+0

Maintenant, je suis sûr que je lui donne le bon chemin. Parce que si je donne un chemin invalide, je reçois ce qui suit Classe non trouvée: "service/OrderProcessService" Utilisation: WSGEN [options] NewbieToJava

+0

Ooooppss! J'ai manqué l'évidence. J'utilisais/intead de. dans le chemin du fichier de classe. – NewbieToJava

0

Aller à la cible/classes dans le terminal et exécutez

wsgen -verbose -keep -cp . com.your.package.name.OrderProcessServiceImpl 
Questions connexes