当前位置: 首页 > 面试题库 >

加载程序约束违反

段干楚青
2023-03-14
问题内容

我遇到了一个项目有两次相同的.jar(对于我来说,是el-api.jar v2.1)两次的问题,因此,当我尝试使用Tomcat
6运行项目时,出现了以下错误堆栈。

WARNING: Unexpected error forwarding to login page
javax.servlet.ServletException: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature

 at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.LinkageError: loader constraint violation: when resolving interface method "javax.servlet.jsp.JspApplicationContext.getExpressionFactory()Ljavax/el/ExpressionFactory;" the class loader (instance of org/apache/jasper/servlet/JasperLoader) of the current class, org/apache/jsp/login_jsp, and the class loader (instance of org/apache/catalina/loader/StandardClassLoader) for resolved class, javax/servlet/jsp/JspApplicationContext, have different Class objects for the type javax/el/ExpressionFactory used in the signature

我发现了 http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses-
directive/

但这没有用,因为解决方案影响了我项目的太多部分。

我无法对Tomcat进行任何更改,并且该项目将被许多其他用户使用。

当前的解决方法是每次执行构建并使用Tomcat6时都手动删除el-api.jar。然后,我们需要将.jar放回原处,这是其他内容所要求的。

我使用Maven 2和Maven 3进行构建。(顺便说一句,有人知道在Jruby上使用Maven3吗?)

谁能帮我解决这个问题?


问题答案:

我遇到了一个项目有两次相同的.jar(对于我来说,是el-api.jar v2.1)两次的问题,因此,当我尝试使用Tomcat
6运行项目时,出现了以下错误堆栈。

然后将el-api.jar工件标记为provided,如果是的话。

当前的解决方法是每次执行构建并使用Tomcat6时都手动删除el-api.jar。然后,我们需要将.jar放回原处,这是其他内容所要求的。

处理此问题的更好方法是在配置文件中声明依赖项并将其标记为provided(例如,在“ tomcat6”配置文件中)或不根据需要进行标记。



 类似资料:
  • 帮助我如何解决这个问题?我正在使用java进行NetSuite集成,我将所需的jar文件添加到我的项目中。添加jboss 6.1.0中部署的jar后。添加此jar后org.apache.sling.commons.log-2.0.6.jar获得以下异常。这是我的堆栈跟踪。

  • 我试图在WAS8.5上部署Web服务,我在启动应用程序时在服务器日志中出现以下异常。此服务以前在WAS7上运行。 我已经将类加载配置更改为parent last并进行了测试,但运气不好。我有泽西服务器1.9。1在我的大会中。 有人知道这件事吗? 提前谢谢。 [3/7/14 6:42:30:854 CST]00000067 FFDCW公司。国际商用机器公司ws。ffdc。impl。FfdcProvi

  • 问题内容: 该环境在Linux上为WAS 6.1,部署了一个使用xercesImpl.jar中的类的webapp。 由于公司政策的限制,该应用必须使用以下设置进行部署: WAR文件包含xercesImpl.jar的副本,该副本与编译应用程序时在类路径中的副本相同。 当启动webapp时,当Spring尝试解析其配置时,它会抛出: 分析如此之遥 似乎WAS提供了org.apache.xerces.j

  • 我正在使用Spring和Hibernate,我得到了这个例外。以下是我试图获得的:我有User和UserSettings类,它们以OneToMany和ManyToOne注释为界,如下所示: 现在,我想为用户添加设置,我是这样做的: 问题来了:UserSettings中的用户持有旧设置和新设置的集合(设置,我刚刚创建并想要添加),但旧设置持有用户的集合,其中没有新设置。我想这就是为什么我会遇到异常,

  • 我有一个MathematicsAnswer引用的实体数学。如果对数学执行post请求,我会得到一个例外,即MathsAnswer上的字段不能为空。但我确实在球场上跳了起来。拜托,我需要这个解决方案<代码>java.sql。SQLIntegrityConstraintViolationException:列'question_id'不能为空。 sql架构: 实体类: MathsAnswers.jav

  • 我有一个迁移脚本之间的2个不同的模式数据库。脚本做了3件事:1。禁用约束2。将记录从旧架构插入到新架构3。启用约束 我发现这两个约束在旧的模式中是不存在的。这2个表的表结构定义有什么问题吗?