我有一个使用Hibernate和Maven的J2EE项目。
hibernate部分工作正常,我可以从几个类做我需要的东西。 但是,当我尝试从servlet使用Hibernate工具时,我得到:
SEVERE: Servlet.service() for servlet [servlets.ImproServletTest] in context with path [/ImproDB] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.hibernate.HibernateException
我认为这指向了WEB-INF中不可用的hibernate类。 我假设我需要硬拷贝WEB-INF目录中的jar来进行排序。
但是,hibernate类是通过Maven导入的。 我可以在Eclipse项目资源管理器中看到它们: “ProjectName / Java Resources / Libraries / Maven Dependencies”。 但是我的项目工作区似乎没有这样的目录(我的意思是在我的硬盘上)。 这些罐子应该放在硬盘上哪里? 将它们包含在WEB-INF中的最佳做法是什么,希望这能解决我的问题?
提前谢谢。编辑: 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>ImproDB</groupId>
<artifactId>ImproDB</artifactId>
<version>0.0.1-SNAPSHOT</version>
<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>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
</dependency>
</dependencies>
</project>
答案 0 :(得分:1)
像这样编辑你的pom.xml并运行你的pom.xml所在的命令mvn clean package
。这将构建Web应用程序到war包,hibernate也将包含在WEB-INF/lib
文件夹中:
<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>ImproDB</groupId>
<artifactId>ImproDB</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.10.Final</version>
</dependency>
</dependencies>
</project>
答案 1 :(得分:0)
你必须添加servlet依赖..
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
试试这个