2014-01-12 80 views
1

我目前正在學習Spring的ioc/struts2,並且我不斷收到NoClassDefFoundError。正確的罐子在我的pom文件中,所以我很困惑。在this advice之後,我添加了有問題的jar到我的引導條目中,並且它擺脫了那個特定的NoClassDefFoundError,但我遇到了另一個。來自tomcat的NoClassDefFoundError。我的POM有什麼問題嗎?

我不斷添加罐子到我的引導條目,而且似乎解決了每個出現的問題,但我想確保我實際上解決了我的問題,而不是隻是在上面放上一個繃帶。

以下是當前引導條目:

bootstrap entries

下面

是我的POM和我最近的堆棧跟蹤。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>final-project1.3.1</groupId> 
    <artifactId>final-project1.3.1</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <name>final-project1.3.1</name> 
    <description>final-project1.3.1</description> 
    <dependencies> 
     <!-- hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>antlr</groupId> 
      <artifactId>antlr</artifactId> 
      <version>2.7.7</version> 
     </dependency> 
     <dependency> 
      <groupId>dom4j</groupId> 
      <artifactId>dom4j</artifactId> 
      <version>1.6.1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.common</groupId> 
      <artifactId>hibernate-commons-annotations</artifactId> 
      <version>4.0.4.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.17</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate.javax.persistence</groupId> 
      <artifactId>hibernate-jpa-2.1-api</artifactId> 
      <version>1.0.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.javassist</groupId> 
      <artifactId>javassist</artifactId> 
      <version>3.18.1-GA</version> 
     </dependency> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.11</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hamcrest</groupId> 
      <artifactId>hamcrest-core</artifactId> 
      <version>1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.logging</groupId> 
      <artifactId>jboss-logging</artifactId> 
      <version>3.1.4.GA</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>1.7.5</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.logmanager</groupId> 
      <artifactId>jboss-logmanager</artifactId> 
      <version>1.5.1.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.logging</groupId> 
      <artifactId>jboss-logging-annotations</artifactId> 
      <version>1.2.0.Beta1</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss.spec.javax.transaction</groupId> 
      <artifactId>jboss-transaction-api_1.2_spec</artifactId> 
      <version>1.0.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.jboss</groupId> 
      <artifactId>jandex</artifactId> 
      <version>1.1.0.Final</version> 
     </dependency> 
     <!-- end hibernate --> 
     <!-- start spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>3.2.3.RELEASE</version> 
     </dependency> 
     <!-- end spring --> 

     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-core</artifactId> 
      <version>2.3.14.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-junit-plugin</artifactId> 
      <version>2.3.14.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-spring-plugin</artifactId> 
      <version>2.3.14.3</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.struts</groupId> 
      <artifactId>struts2-tiles-plugin</artifactId> 
      <version>2.3.14.3</version> 
     </dependency> 

     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-api</artifactId> 
      <version>2.0.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-core</artifactId> 
      <version>2.0.6</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.tiles</groupId> 
      <artifactId>tiles-jsp</artifactId> 
      <version>2.0.6</version> 
     </dependency> 
     <!-- start spring --> 
     <!-- struts --> 
     <dependency> 
      <groupId>commons-beanutils</groupId> 
      <artifactId>commons-beanutils</artifactId> 
      <version>1.8.3</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-chain</groupId> 
      <artifactId>commons-chain</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.8</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-collections</groupId> 
      <artifactId>commons-collections</artifactId> 
      <version>3.2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-digester</groupId> 
      <artifactId>commons-digester</artifactId> 
      <version>2.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-el</groupId> 
      <artifactId>commons-el</artifactId> 
      <version>1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>2.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.apache.commons</groupId> 
      <artifactId>commons-lang3</artifactId> 
      <version>3.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.3</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging-api</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-pool</groupId> 
      <artifactId>commons-pool</artifactId> 
      <version>1.6</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-validator</groupId> 
      <artifactId>commons-validator</artifactId> 
      <version>1.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.freemarker</groupId> 
      <artifactId>freemarker</artifactId> 
      <version>2.3.19</version> 
     </dependency> 
     <dependency> 
      <groupId>jstl</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 
     <dependency> 
      <groupId>com.googlecode.json-simple</groupId> 
      <artifactId>json-simple</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>ognl</groupId> 
      <artifactId>ognl</artifactId> 
      <version>3.0.6</version> 
     </dependency> 
     <dependency> 
      <groupId>oro</groupId> 
      <artifactId>oro</artifactId> 
      <version>2.0.8</version> 
     </dependency> 
     <!-- end struts --> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 
<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>servlet-api</artifactId> 
    <version>2.5</version> 
    <scope>provided</scope> 
</dependency> 
    </dependencies> 
    <build> 
     <sourceDirectory>src/main/java</sourceDirectory> 
     <plugins> 
      <plugin> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>3.1</version> 
       <configuration> 
        <source>1.7</source> 
        <target>1.7</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <warSourceDirectory>WebContent</warSourceDirectory> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

和堆棧跟蹤:

Jan 12, 2014 6:23:09 PM org.apache.catalina.core.AprLifecycleListener init 
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /Users/carriecoxwell/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:. 
Jan 12, 2014 6:23:09 PM org.apache.tomcat.util.digester.SetPropertiesRule begin 
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:final-project1.3.1' did not find a matching property. 
Jan 12, 2014 6:23:10 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["http-bio-8080"] 
Jan 12, 2014 6:23:10 PM org.apache.coyote.AbstractProtocol init 
INFO: Initializing ProtocolHandler ["ajp-bio-8009"] 
Jan 12, 2014 6:23:10 PM org.apache.catalina.startup.Catalina load 
INFO: Initialization processed in 1304 ms 
Jan 12, 2014 6:23:10 PM org.apache.catalina.core.StandardService startInternal 
INFO: Starting service Catalina 
Jan 12, 2014 6:23:10 PM org.apache.catalina.core.StandardEngine startInternal 
INFO: Starting Servlet Engine: Apache Tomcat/7.0.40 
Jan 12, 2014 6:23:10 PM org.apache.catalina.util.SessionIdGenerator createSecureRandom 
INFO: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [300] milliseconds. 
Jan 12, 2014 6:23:11 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener 
java.lang.NoClassDefFoundError: org/springframework/beans/factory/ListableBeanFactory 
    at java.lang.Class.getDeclaredConstructors0(Native Method) 
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2493) 
    at java.lang.Class.getConstructor0(Class.java:2803) 
    at java.lang.Class.newInstance(Class.java:345) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:138) 
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4823) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 

Jan 12, 2014 6:23:11 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Skipped installing application listeners due to previous error(s) 
Jan 12, 2014 6:23:11 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Error listenerStart 
Jan 12, 2014 6:23:11 PM org.apache.catalina.core.StandardContext startInternal 
SEVERE: Context [/final-project1.3.1] startup failed due to previous errors 
Jan 12, 2014 6:23:11 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["http-bio-8080"] 
Jan 12, 2014 6:23:11 PM org.apache.coyote.AbstractProtocol start 
INFO: Starting ProtocolHandler ["ajp-bio-8009"] 
Jan 12, 2014 6:23:11 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 1109 ms 

在此先感謝。

+0

找不到哪一個類? –

+0

org/springframework/beans/factory/ListableBeanFactory或它需要的東西。 – bmargulies

+0

目前它是ListableBeanFactory。 - 哎呀,@bmargulies,在我回復之前我沒有看到你的回覆。 – thatpaintingelephant

回答

3

java.lang.NoClassDefFoundError運行時版本在類路徑的類是不一樣的,在編譯時間。

您的堆棧跟蹤沒有ClassNotFoundError - 因此您的問題可能是服務器部署時發現的類的多個版本。 ListableBeanFactory是spring-beans.jar的一部分

您可以搜索在運行時服務器環境中找到多少版本的spring-beans.jar,即在Tomcat中作爲您添加的boorstrap的一部分,也可以在您自己的內部WEB-INF下的webapp庫?
可能有倍數或版本相互衝突

看起來你正在IDE中運行Tomcat,在這種情況下,你必須在正確的位置搜索。

+0

我搜索了我的項目,3.2.3.RELEASE是唯一出現的版本。我的webapp庫中沒有任何東西。我應該把我的彈簧罐放在那裏,而不是在我的POM中? – thatpaintingelephant

+0

爲了讓webapp運行,是的,它首選將Spring Jars放在那裏。這是從你的POM中自動獲取的,但是令我驚訝的是你的mvn依賴樹顯示'org.springframework:spring-beans:jar:3.2.3.RELEASE:compile'這意味着它只用於編譯而不是捆綁到這是默認的Web應用程序。但是你的POM沒有指定'compile'的'scope',那麼爲什麼mvn只是在編譯時才考慮它。 – JoseK

+0

你可以搜索任何其他的pom.xml文件,這些文件可能會覆蓋你粘貼的這個文件。 Maven肯定會獲得爲所有你不需要的Spring jar所定義的'compile'範圍。你的Spring jar將會進入你的webapp的WEB-INF/lib目錄。 – JoseK

0
<dependency> 
<groupId>org.springframework</groupId> 
<artifactId>spring-beans</artifactId> 
<version>3.2.3.RELEASE</version> 
</dependency> 

你似乎缺少彈簧豆從this stackoverflow的問題。

+0

謝謝!我補充說,但我似乎仍然有同樣的問題。 – thatpaintingelephant

相關問題