首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >旧Java ( Struts )应用Log4J升级中的多个问题

问旧Java ( Struts )应用Log4J升级中的多个问题
EN

Stack Overflow用户
提问于 2022-02-23 06:17:25
回答 1查看 212关注 0票数 0

现状

:一个在Java1.5JDK中开发的基于Struts的GUI应用程序,用于编译:1.7TomcatServer: Application托管在Tomcat 6上。当前的Log4J版本: 2.3构建工具: Maven 3

Aim

将Log4J升级到最新版本。

问题描述

在升级过程中,我尝试了多种方法,但tomcat和Java的所有组合都不同。但我遇到了不同的问题。以下是问题清单。

**JDK 7,Log4j-2.3 Tomcat 6(现状) **

能够构建war文件,应用程序被部署并顺利运行。

JDK 7和Tomcat 6,Log4j- 2.17.1

生成的war文件并不是拥有应用程序中的所有类。(相当令人惊讶)。我为maven启用了调试日志,但没有发现任何令人惊讶的条目。我将Log4j版本恢复到2.3,一切都恢复了正常。尝试了多次迭代,但仍然存在相同的问题。

JDK 8和Tomcat 6,Log4j- 2.17.1

我能够成功地构建war文件(与所有类一起),并将其部署到tomcat。但是当我打开webapp的登陆页面时,我会发现一个错误: java.io.ObjectInputStream类型无法解决。它是从必需的.class文件间接引用的。

在调查过程中,我了解到这并不是很多文章中提到的JDK 8中的一个bug,建议升级Tomcat版本。

JDK 8和Tomcat 8,Log4j- 2.17.1

成功地构建了war文件。在将它部署到Tomcat时,我们得到以下错误:

严重的localhost-startStop-1 org.apache.catalina.startup.ContextConfig.processAnnotationsJar无法处理Jar jar:file:/C:/xxxx/xxx/xxxx.war!/WEB-INF/lib/client-1.1.jar中的Jar条目xxxxxxxx.class,用于注释org.apache.tomcat.util.bcel.classfile.ClassFormatException:常量池中的无效字节标记: 60

根据调查和各种帖子,我们跳过了jar扫描,在tomcat的配置JarsToSkip文件中添加了catalina.properties。

JDK 8和Tomcat 8,Log4j- 2.17.1,有问题的Jar的带有jarsToSkip条目的catalina.properties

能够构建war文件,并将其部署到Tomcat。成功打开登录页。

当我提交登录表单时,应用程序遇到以下错误: java.lang.NoSuchMethodError: java.lang.NoSuchMethodError

查看文档和代码,方法的签名使一切看起来都很好。这个错误令人惊讶。

Tomcat还在正确的位置拥有catalina.jar、servlet-api.jar文件。

尝试使用更高的tomcat版本。

JDK 8,Tomcat 9,Log4j- 2.17.1,有问题的Jar的带有jarsToSkip条目的catalina.properties

再次显示相同的错误: java.lang.NoSuchMethodError: java.lang.NoSuchMethodError

**这次与Tomcat 10试过**

现在,使用这个版本的tomcat servlet,apis被打包在jakarta.servlet.*包中,而不是javax.servlet.*包中。

这将需要大量的代码更改和测试,因此我正在避免它。

我在找什么

您能帮助我理解一下,我尝试的整个过程是否正确,或者应该是JDK的changed?

  • Which组合,log4J-2.17.1

  • There和log4J-2.17.1

  • There的组合在不同的组合中都是不同的错误,我应该首先关注并尽量避免哪些错误,以便能够解决situation.

  • Any关于如何解决这个错误的建议。

请让我知道,如果你需要更多的细节围绕这件事,以便能够帮助。

P.S.:

我在Java、Struts、Maven、Tomcat工具方面很新,我可能错过了一些看似基本的解决方案。我愿意听取各种建议。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-05-05 06:00:26

您应该添加log4j-core和log4j-jc的依赖项,其次(在我的例子中)将log4j.properties移动到log4j2.properties

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71232150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档