【问题标题】:Does two servlets share the same jars on tomcat?两个 servlet 是否在 tomcat 上共享相同的 jar?
【发布时间】:2014-04-24 20:28:56
【问题描述】:

看来我在 Tomcat 中有 jar 冲突。

事实:

  • 在开发模式下运行良好的 GWT 应用程序。
  • 同一应用程序在独立服务器上以编译模式运行良好。
  • 在运行其他应用程序的测试服务器上调用同一应用程序时会引发异常:

    Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4jFactory (Caused by java.lang.ClassNotFoundException: org.apache.commons.logging.impl.Log4jFactory)
        at org.apache.commons.logging.LogFactory.createFactory(LogFactory.java:1276)
        at org.apache.commons.logging.LogFactory$2.run(LogFactory.java:1065)
    

我以为 Tomcat 正在为每个 servlet 隔离 Jar,看来它没有,我错了......

app1 正在使用:

commons-beanutils-1.8.3.jar
commons-collections-3.2.1.jar
commons-configuration-1.10.jar
commons-dbcp-1.2.2.jar
commons-lang-2.6.jar
commons-logging-1.1.1.jar
commons-pool-1.5.3.jar
gwt-servlet.jar
hibernate-validator-4.1.0.Final.jar
hibernate-validator-4.1.0.Final-sources.jar
json-simple-1.1.1.jar
log4j-1.2.16.jar
postgresql-9.1-901-1.jdbc4.jar
reds_da-1.0.0.jar
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar

app2 正在使用:

activation-1.1.jar
avalon-framework-4.1.4.jar
commons-beanutils-1.8.0.jar
commons-codec-1.4.jar
commons-collections-3.2.1.jar
commons-configuration-1.0-dev-3.20030607.194155.jar
commons-dbcp-1.2.2.jar
commons-digester-2.0.jar
commons-fileupload-1.0.jar
commons-grant-1.0-beta-4.jar
commons-httpclient-2.0-beta1.jar
commons-io-2.0.1.jar
commons-jelly-20030902.160215.jar
commons-jelly-tags-antlr-20030211.143720.jar
commons-jelly-tags-jsl-20030211.143151.jar
commons-jelly-tags-log-20030211.142821.jar
commons-jelly-tags-velocity-20030303.205659.jar
commons-jelly-tags-xml-20030211.142705.jar
commons-jxpath-1.3.jar
commons-lang-2.6.jar
commons-logging-1.0.4.jar
commons-logging-api-1.0.4.jar
commons-pool-1.5.3.jar
commons-validator-1.3.1.jar
core-2.0.jar
cryptix-3.2.0.jar
cssparser-0.9.5.jar
dom4j-1.6.1.jar
ecj-3.7.2.jar
ecs-1.4.2.jar
excalibur-component-2.1.jar
excalibur-instrument-api-2.1.jar
excalibur-instrument-mgr-api-2.1.jar
excalibur-instrument-mgr-impl-2.1.jar
excalibur-logger-2.1.jar
excalibur-pool-api-2.1.jar
excalibur-pool-impl-2.1.jar
excalibur-pool-instrumented-2.1.jar
freemarker-2.3.8.jar
htmlunit-2.9.jar
htmlunit-core-js-2.9.jar
httpclient-4.1.2.jar
httpcore-4.1.2.jar
httpmime-4.1.2.jar
itext-2.1.5.jar
javase-2.0.jar
javax.mail-api-1.5.1.jar
jcs-1.3.jar
jericho-html-3.3.jar
jndi-1.2.1.jar
json-20090211.jar
jsoup-1.6.1.jar
junitperf-1.8.jar
jython-2.1.jar
log4j-1.2.13.jar
logkit-1.0.1.jar
mail-1.4.jar
mailapi-1.5.1.jar
nekohtml-1.9.15.jar
odfdom-java-0.8.7.jar
oro-2.0.7.jar
poi-3.1-FINAL.jar
poi-contrib-3.1-FINAL.jar
poi-scratchpad-3.1-FINAL.jar
postgresql-9.1-901-1.jdbc4.jar
qrgen-1.3.jar
reds_da-1.0-SNAPSHOT.jar
sac-1.3.jar
serializer-2.7.1.jar
smtp-1.5.1.jar
stratum-1.0-b3.jar
torque-3.3.jar
turbine-2.3.3.jar
util-1.4-SNAPSHOT.jar
velocity-1.3.1.jar
velocity-dvsl-0.45.jar
village-3.3.jar
xalan-2.7.1.jar
xercesImpl-2.9.1.jar
xml-apis-1.0.b2.jar
xmlParserAPIs-2.0.2.jar
xmlpull-1.1.3.1.jar
xmlrpc-2.0.jar
xom-1.1.jar
xpp3_min-1.1.4c.jar
xstream-1.4.5.jar

显然,似乎

commons-configuration-1.10.jar
log4j-1.2.16.jar
commons-logging-1.1.1.jar

有冲突。

【问题讨论】:

  • 你的战争中有commons-logging.jar吗?
  • 是的,我愿意。实际上,如果我删除所有其他 servlet 并离开我的,它可以工作......
  • @jpg你的Tomcat和Java版本是什么?

标签: java tomcat servlets gwt


【解决方案1】:

在dev mode Log4jFactory 类中从gwt-dev.jar 中挑选,这就是为什么它工作正常但在tomcat 服务器上你没有它。

可能是它在服务器上的冲突 jars。只需从你的战争中删除 gwt-dev.jar,因为它只需要 dev mode。

【讨论】:

  • 我编辑了我的帖子,实际上问题是更多的 JAR 冲突,一些遗留 servlet 有一些需求。
  • 你在说什么罐子。请分享日志。
  • 我在上面添加了一些解释!谢谢!
  • 查看 app2 中的 jar commons-configuration-1.0-dev-3.20030607.194155.jar?
  • 我把stackoverflow.com/questions/23291539/…中的问题完全改写了
【解决方案2】:

我希望 JAR 之间存在冲突,经过进一步调查后,我对问题的描述有所不同:

Deployment issue with GWT app

【讨论】:

    猜你喜欢
    • 2018-01-17
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多