gpt4 book ai didi

java - Tomcat 8.0.32 - 更新了网络应用程序未使用的共享库

转载 作者:行者123 更新时间:2023-11-28 22:26:34 25 4
gpt4 key购买 nike

我有一个在 Windows 上运行的 tomcat 8.0.32。

在文件夹 tomcat\lib 中,我有一个 shared.jar 文件。shared.jar 是所有 Web 应用程序使用的全局共享库。此文件包含一个包含常量的 java 类:

public final int CONSTANTVALUE = 1000;

我有 2 个使用此 CONSTANTVALUE 的 Web 应用程序。我删除了 shared.jar 并将新的 shared.jar 复制到具有新常量值的 tomcat\lib 中:

public final int CONSTANTVALUE = 2000;

我重新启动了 windows(和 tomcat),但应用程序仍然从旧版本的 shared.jar 中看到值“1000”。

我已经确认这个类只存在于 tomcat\lib 文件夹下,没有其他地方。应用程序 WEB-INF\lib 没有这个 jar。

如果我删除 shared.jar,则 Web 应用程序将因 ClassNotFoundException(确认正在使用 shared.jar)而无法运行。

如果我重新部署 Web 应用程序,它们会选择新的常量值“2000”

tomcat 为什么/如何记住旧版本的 shared.jar ?

为什么我必须重新部署 Web 应用程序才能让他们获取已被新代码替换的 shared.jar? (违背了共享库的目的)

最佳答案

事实证明这是一个 java 问题,而不是 Tomcat。 Java 编译使用常量折叠(内联常量值)从而消除对共享库的依赖。

使用避免常量折叠的技术,我设法强制执行对共享库的依赖。

关于java - Tomcat 8.0.32 - 更新了网络应用程序未使用的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42488616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com