我想使用 Oracle 数据库、Hibernate 5 和 Apache Olingo V4 为自己构建一个小应用程序。
我使用 maven 将应用程序拆分为单独的 Hibernate 和单独的 OData 项目。
所以我的休眠服务正在工作。我的 Odata 服务(带有示例数据)也在工作。
现在我想使用 maven 组合这些项目。在 Odata 项目 pom 中,我添加了我的休眠项目的依赖项并收到以下错误消息。
SCHWERWIEGEND:servlet [jsp] 的 Servlet.service() 在路径 [/esa_odatav4] 的上下文中抛出异常 [java.lang.LinkageError:加载程序约束冲突:解析接口方法时“javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax /el/ExpressionFactory;" 当前类 org/apache/jsp/index_jsp 的类加载器(org/apache/jasper/servlet/JasperLoader 的实例)和类加载器(org/codehaus/plexus/classworlds/realm/ClassRealm 的实例)方法的定义类 javax/servlet/jsp/JspApplicationContext 对于签名中使用的类型 javax/el/ExpressionFactory 具有不同的类对象] 根本原因 java.lang.LinkageError: loader constraint violation: when resolve interface method "javax.servlet .jsp.JspApplicationContext。
我已经搜索了链接的错误,并发现了很多对我没有帮助的东西。我尝试了不同的排除。
为了运行应用程序,我使用了 maven tomcat 插件,但它不起作用。奇怪的是,如果我使用本地 tomcat 实例运行项目,它会完美运行。
有人知道如何在 Maven 插件上运行应用程序吗?
但我几乎可以肯定该错误与项目的库有关。我没有更多的线索。
我的 Hibernate 项目依赖项是:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.4.Final</version>
</dependency>
我的 OData 依赖项是:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>${javax.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-server-api</artifactId>
<version>${odata.version}</version>
</dependency>
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-server-core</artifactId>
<version>${odata.version}</version>
</dependency>
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-commons-api</artifactId>
<version>${odata.version}</version>
</dependency>
<dependency>
<groupId>org.apache.olingo</groupId>
<artifactId>odata-commons-core</artifactId>
<version>${odata.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.11</version>
<scope>compile</scope>
</dependency>
<properties>
<javax.version>2.5</javax.version>
<odata.version>4.3.0</odata.version>
<slf4j.version>1.7.7</slf4j.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>