java.lang.NoClassDefFoundError:org / apache / axis2 / client / Stub

时间:2012-05-03 17:32:08

标签: java axis2

我已经使用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

4 个答案:

答案 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类加载器相同的问题,请按照herehere上的提示进行操作。

最重要的部分是在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>