我已经使用Axis2向我的项目添加了一个Web服务,现在我无法运行我的应用程序。
这是我正在使用的类路径:
<property name="classpath" location="bin:EventReservationCore/bin:EventReservationCore/db:EventReservationCore/lib/*:EventReservationCore/lib/util_iso2.jar:EventReservationCore/lib/sqlitejdbc-v056.jar:AuthorizationRMI/lib/AuthorizationService.jar:EventReservationCore/lib/activemq-all-5.4.3.jar:/home/ander/axis2-1.6.1/webapp/axis2.war"/>
这是在我添加Axis2 Web服务之前运行的目标。
<target name="run.besocial">
<java classname="eventReservationServer.ReservationEventServer" classpath="${classpath}" fork="true">
<jvmarg value="-Djava.rmi.server.codebase=file:EventReservationCore/bin/ file:EventReservationCore/lib/util_iso2.jar"/>
<jvmarg value="-Djava.security.policy=EventReservationCore/java.policy" />
</java>
</target>
结果我收到了这个错误:
[java] Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis2/client/Stub
[java] at java.lang.ClassLoader.defineClass1(Native Method)
[java] at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
[java] at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
[java] at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
[java] at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
[java] at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[java] at eventReservationServer.eventServerGateway.WSEventServerGateway.getEvents(WSEventServerGateway.java:19)
[java] at eventReservationServer.ReservationEventServer.<init>(ReservationEventServer.java:101)
[java] at eventReservationServer.ReservationEventServer.main(ReservationEventServer.java:130)
[java] Caused by: java.lang.ClassNotFoundException: org.apache.axis2.client.Stub
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[java] ... 15 more
答案 0 :(得分:5)
如果您使用的是tomcat,请将位于axis2 / lib文件夹下的所有jar文件复制到tomcat / lib文件夹中,并将它们添加到类路径中,如下所示:D:\ axis2-1.6.2 \ lib *
答案 1 :(得分:1)
线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / axis2 / client / Stub
可以通过将axis2-kernel-1.6.2添加到类路径来删除上面的错误,但是在使用wsdl2java.bat生成存根之后可能会开始出现其他错误。
因此,在编译客户端时,最好将所有axis2-jar添加到classpath。
希望这有帮助
答案 2 :(得分:0)
没有一个答案对我有帮助。这就是我所做的。
我使用eclipse生成Runnable Jar(右键单击&gt; Export-&gt; Runnable Jar),并将所有库添加为包。 它给了我一个JAR,我可以从命令行运行。
然后我在我的构建创建的eclipse和Jar之间做了差异。我能够找到我的构建没有放入Jar中的缺失依赖项。
答案 3 :(得分:0)
如果您遇到与JBoss类加载器相同的问题,请按照here和here上的提示进行操作。
最重要的部分是在JBoss模块配置中定义一个新模块,并在您的MANIFEST.MF文件中找到该模块。
Maven将帮助您完成后续部分。以下是将轴模块添加到Manifest文件的示例配置。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<configuration>
<archive>
<manifestEntries> <!--Manually added JBoss Modules (that are not found by JBoss class loader) must be loaded here-->
<Dependencies>axis.axis</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
根据您的包装类型,您可以使用其他maven插件,如maven-jar-plugin或maven-war-plugin。
依赖包名称必须与您在JBoss模块中为模块名称指定的名称匹配。上面的轴模块在JBoss模型中定义,如上面的链接所述。
<module xmlns="urn:jboss:module:1.1" name="axis.axis">
<properties>
<property name="jboss.api" value="private"/>
</properties>
<!-- ... -->
</module>