3

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

4 回答 4

5

如果您使用的是 tomcat,请将位于 axis2/lib 文件夹下的所有 jar 文件复制到 tomcat/lib 文件夹,并将它们添加到类路径中,如 D:\axis2-1.6.2\lib*

于 2012-05-03T19:36:07.633 回答
2

线程“主”java.lang.NoClassDefFoundError 中的异常:org/apache/axis2/client/Stub

可以通过将axis2-kernel-1.6.2 添加到类路径来消除上述错误,但是在使用wsdl2java.bat 生成存根后,您可能会开始遇到其他错误。

因此,您最好在编译客户端时将所有axis2-jar 添加到类路径中。

希望这可以帮助

于 2012-05-03T19:41:48.380 回答
0

如果您在 JBoss 类加载器中遇到同样的问题,请按照此处此处的提示进行操作。

最重要的部分是在 JBoss 模块配置中定义一个新模块,并在您的 MANIFEST.MF 文件中找到该模块。

Maven 将帮助您完成后面的部分。以下是将轴模块添加到清单文件的示例配置。

         <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>
于 2015-04-08T05:33:16.177 回答
0

没有一个答案对我有帮助。这就是我所做的。

我使用 Eclipse 生成 Runnable Jar(右键单击->导出-> Runnable Jar),并将所有库添加为包。它给了我一个可以从命令行运行的 JAR。

然后我在 Eclipse 中的 Jar 和我的构建创建的 Jar 之间进行了比较。我能够找到我的构建没有放入 Jar 中的缺失依赖项。

于 2015-02-12T23:34:22.720 回答