我正在尝试在 project-web-server 中初始化Hibernate会话。为此,我使用的是一个库,我写了 project-data-model ,它在maven中作为依赖关系链接:
project-web-server pom.xml:
<dependency>
<groupId>com.preoject.server</groupId>
<artifactId>project-data-model</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
HibernateSession.java
因此位于项目数据模型;这就是我在 project-web-server :
public class ServerConfig implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
try {
HibernateSession.initialize();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
public void contextDestroyed(ServletContextEvent event) {
// Do stuff on shutdown.
}
}
即使我将数据模型项目作为依赖项引用,但我得到java.lang.NoClassDefFoundError
例外:
java.lang.NoClassDefFoundError: org/hibernate/Interceptor
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70)
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65)
at com.project.datamodel.HibernateSession.initialize(HibernateSession.java:19)
at com.project.web.server.ServerConfig.contextInitialized(ServerConfig.java:14)
...
我无法弄清楚我必须在这做什么。文件夹war/WEB-INF/lib
不包含任何与Hibernate相关的库;这可能是问题吗?我不确定,因为我已将Hibernate依赖项添加到父pom.xml:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.0.1.Final</version>
</dependency>
答案 0 :(得分:0)
默认情况下,Maven Eclipse插件会将您的依赖项添加到Eclipse项目类路径中。除非您根据需要明确配置它,否则它不知道任何自定义构建/打包/部署方案。也许这个question可能对您的用例有所帮助。 This article解释了如何配置M2Eclipse插件目标。
尽管如此,我希望Eclipse的GWT插件(我假设您使用它)从项目类路径中获取所有内容并将其复制到适当的位置,我不确定为什么它不会对您的设置执行此操作。