我正在製作自己的Struts_1.2 + Log4J2_2.0.2 + Hibernate_4.3.6項目。我做了一個簡單的DAO類,並在本地環境(運行爲本地Java應用程序的簡單Java類)中運行,並且它100%正常工作。針對Hibernate的java.lang.NoSuchMethodError僅在Tomcat上配置類
現在我只是從一個動作控制器調用相同的DAO類,即使JSP將數據發送到動作控制器,然後它將數據傳輸到DAO,服務器是Tomcat 7.x,當我嘗試運行時,它表示
java.lang.NoSuchMethodError: org.hibernate.cfg.Configuration.addAnnotatedClass(Ljava/lang/Class;)Lorg/hibernate/cfg/Configuration;
我無法理解什麼是沒有的Tomcat(本地應用程序),但是當涉及到Tomcat是不能夠找到在類中的方法運行相同的代碼。
我已經檢查了罐子,它包含的文件和文件具有方法也(沒有編譯器錯誤)
我會很感激,如果有人可以幫助我在此。
的Maven(pom.xml中):
<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>TestApp</groupId>
<artifactId>TestApp</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<name>TestApp</name>
<description>Website</description>
<build>
<sourceDirectory>src</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>
<dependencies>
<dependency>
<groupId>struts</groupId>
<artifactId>struts</artifactId>
<version>1.2.8</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.0.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-server</artifactId>
<version>2.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-common</artifactId>
<version>2.12</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.12</version>
</dependency>
</dependencies>
</project>
DAO(爪哇):
public void saveHitCountInDB(HitCount count) {
session.update(count);
session.flush();
}
POJO(爪哇):
@Entity
@Table(name = "hitcounter")
public class HitCount {
@Id
@Column(name = "count", unique = true, nullable = false)
private int hitCount;
//getter and setter and constructors
}
連接(爪哇):
configuration = new Configuration().configure();
configuration.addAnnotatedClass(HitCount.class); //problem reported here
注意:讓我知道是否需要更多代碼。
它看起來像'Hibernate Annotation jar'是錯誤的。它與jar版本不兼容。所以這就是爲什麼它顯示「'java.lang.NoSuchMethodError'」 – 2014-09-13 12:41:48
請你完成'pom.xml',同時檢查'hibernate-commons-annotations'的pom依賴關係樹 – 2014-09-13 12:43:52
@ ankur-singhal但是它怎麼樣可能相同的代碼是離線成功運行的(我使用PSVM調用了相同的dao函數,並且它正在工作)?(請在上面找到我的完整pom.xml) – Jayesh 2014-09-13 16:08:53