2012-05-03 118 views
3

我已經使用Axis2將Web服務添加到我的項目中,現在我無法運行我的應用程序。java.lang.NoClassDefFoundError:org/apache/axis2/client/Stub

這是我使用的類路徑:

<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 

回答

5

如果您使用的是Tomcat,全部位於下的Axis2/lib文件夾的JAR文件複製到tomcat/lib文件夾,並將它們添加到這樣d類路徑:\ axis2-1.6.2 \ lib中*

1

異常在線程 「主要」 java.lang.NoClassDefFoundError:組織/阿帕奇/的Axis2 /客戶端/存根

可以通過去除

上述錯誤添加axis2- kernel-1.6.2添加到類路徑中,但在使用wsdl2java.bat生成存根後,可能會發生其他錯誤。

因此,您最好在編譯客戶端時將所有的axis2-jar添加到classpath中。

希望這會有所幫助

0

沒有任何答案對我有幫助。這就是我所做的。

我用eclipse生成了Runnable Jar(右鍵 - > Export-> Runnable Jar),並將所有的庫作爲包添加。它給了我一個JAR,我可以從命令行運行。

然後我做了日食Jar和我的構建創建的Jar之間的差異。我能夠找到我的構建不包含在Jar中的缺失依賴項。

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>