【问题标题】:Which java class issues warning on catalina.out哪个 java 类在 catalina.out 上发出警告
【发布时间】:2021-03-10 06:54:15
【问题描述】:

我目前正在调试为什么在Java 1.8 中编译的旧版Maven Web 应用程序部署在Tomcat 8.5 上始终发送以下消息:

Warning: Could not get charToByteConverterClass!

奇怪的是,在我的本地 Tomcat 实例上启动它时,我在控制台中看到了警告,但在 catalina.out 文件中却没有。

到目前为止,我的猜测是这是由某种依赖性引起的,因为我们的代码中没有这样的警告。

问题是我们有 非常 旧的依赖项,而且还有很多,所以在尝试升级它们之前,我想知道是否有任何方法:

  • 查看打印的“调用堆栈”。
  • 或者至少看看哪个类在打印那个

到目前为止我尝试过的事情:

  • 将应用程序日志级别设置为信息。
  • 将 Tomcat 的日志记录级别设置为全部。

【问题讨论】:

  • 你有 xalan 依赖,它的版本是什么?
  • @user7294900,是的,这是一个相当古老的版本:2.4.1
  • “查看哪个类正在打印” - jar 文件本质上是 zip 存档,Java 将常量字符串以 UTF-8 格式存储在类文件中。因此,使用可以解压缩 zip 文件的工具搜索该字符串,您应该能够找到该类。
  • @KonstantinKolinko,尝试过但没有运气。这似乎是由 xalan 依赖项中的一些内部错误引起的 JDK 消息。

标签: java maven debugging tomcat tomcat8


【解决方案1】:

您需要升级xalan,因为自 2.7 版本以来已修复问题:

问题现已在 Xalan-J 2.7 版本中得到解决。作为问题报告者,请确认代码不再存在此问题,以便我们关闭此问题。

其实有问题的代码已经完全没有了,哈哈!通过 XALANJ-2087,删除了对 CharToByteConverter 的依赖,并修复了由于算法不正确导致的一些错误。

【讨论】:

  • 我们尝试过,但是在升级xalan 之后,我们得到了java.io.IOException: Underlying input stream returned zero bytes 异常。尚不能确定错误是否消失,因为此异常可能会掩盖它。
  • @GuillemVicens 你需要更新另一个依赖 xalan 的旧 jar,看看你是否在链接 xml.apache.org/xalan-j/downloads.html 上找到它
  • 这比我们最初想象的要复杂得多。此应用程序具有可追溯到 2004 年及以后的依赖项。升级这将需要大量工作。这是纯粹的编程考古学:P 无论如何,我们通过恢复到 xalan 2.1 暂时解决了它,直到我们可以升级所有依赖项。
【解决方案2】:

如果有人遇到这个问题。 xalan 2.7 并未消除该消息。将以下存根类添加到您的构建中将使错误消息静音:

package sun.io;

public class CharToByteConverter {
    public static CharToByteConverter getConverter(String encoding) {
        return new CharToByteConverter();
    }
}

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2020-02-02
    • 2015-02-06
    • 2012-04-17
    • 2013-12-23
    • 1970-01-01
    • 2012-05-03
    • 2023-03-10
    相关资源
    最近更新 更多