我在使用蚂蚁文件中使用wsgen定义我的classPath时遇到困难。
<target name="wsgen">
<property name="wsgen_cp" value="./build/classes/" />
<echo message="classpath is : ${wsgen_cp}"/>
<exec executable="wsgen">
<!-- Classpath -->
<arg value="-verbose" />
<arg value="-classpath" />
<arg value="${wsgen_cp}" />
<!-- Sortie des sources -->
<arg value="-d" />
<arg value="${project.build.dir}/build/generated/"/>
<arg value="-r" />
<arg value="${project.build.dir}/build/wsdl"/>
<arg value="-s" />
<arg value="${project.build.dir}/build/sources"/>
<!-- Classes de WebServices -->
<arg value="-keep" />
<arg value="rpm.patient.wsimpl.RpmPatientInterfaceImpl" />
</exec>
</target>
运行目标后,我会收到以下错误:
[exec] Exception in thread "main" java.lang.NoClassDefFoundError: rpm/patient/RpmPatientInterface
[exec] at java.lang.ClassLoader.defineClass1(Native Method)
[exec] at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
[exec] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
[exec] at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
[exec] at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
[exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
[exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[exec] at java.security.AccessController.doPrivileged(Native Method)
[exec] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[exec] at com.sun.tools.internal.ws.wscompile.WsgenOptions.getClass(WsgenOptions.java:287)
[exec] at com.sun.tools.internal.ws.wscompile.WsgenOptions.validateEndpointClass(WsgenOptions.java:223)
[exec] at com.sun.tools.internal.ws.wscompile.WsgenOptions.validate(WsgenOptions.java:214)
[exec] at com.sun.tools.internal.ws.wscompile.WsgenTool.run(WsgenTool.java:110)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[exec] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[exec] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[exec] at java.lang.reflect.Method.invoke(Method.java:601)
[exec] at com.sun.tools.internal.ws.Invoker.invoke(Invoker.java:120)
[exec] at com.sun.tools.internal.ws.WsGen.main(WsGen.java:42)
[exec] Caused by: java.lang.ClassNotFoundException: rpm.patient.RpmPatientInterface
[exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[exec] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[exec] at java.security.AccessController.doPrivileged(Native Method)
[exec] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
[exec] at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
[exec] ... 21 more
当我将相应的JAR附加到我的classPath时(位于RPM/detter/rpmpatientinterface):
似乎class路径无效,因为它找不到我试图从中生成我的存根的文件: [exec]找不到类:" rpm.patient.wsimpl.rpmpatientinterfaceimpl" [exec]用法:wsgen [options]
有任何提示可以帮助我吗?
我正在努力与我不知道如何生成WSDL的旧系统。它包含Maven库,我必须在-cp
参数中逐个将它们包括在内,我不能使用像java -cp lib/*
命令这样的通配符,不确定为什么。无论如何,希望下面有帮助:
d: mydata Software javajdk bin wsgen -verbose -epect -keep -cp " spring-tx-4.0.2.release.jar; spring-web-4.0.2.2.release.jar; d:/my-xxx-project/target/class/class/class'' com.xxx.ws.webservice.xxximpl -wsdl
我在target/lib
路径中执行此操作,其中包含所有Maven罐子。D:/my-xxx-project/target/classes
包含所有Java类。
对于您的情况,您只需要添加多个罐子文件路径(与;
单独):
<property name="wsgen_cp" value="./build/classes/" />