gpt4 book ai didi

Tomcat 无法从 list 文件中选择类路径

转载 作者:行者123 更新时间:2023-11-28 22:33:39 24 4
gpt4 key购买 nike

Tomcat 版本:5.0.28JDK:1.5.0.14

问题:

我同时使用 hibernate 和 struts我们没有使用这些库的最新和最好的版本所以 - 两者都需要不同版本的 apache-commons 库。

我想到的解决方案:

使用 list 文件并为每个文件指定不同版本的 apache-commons

我的网络应用部署为网络应用程序\我的应用程序

库是webapps\myapp\WEB-INF\lib

我修改了hibernate3.jar中的Manifest.mf如下

Manifest-Version: 1.0

Archiver-Version: Plexus ArchiverCreated-By: 1.5.0_15-b04 (Sun> Microsystems Inc.)Class-Path: hibernatelib/slf4j-api-1.5.2.jar

并将slf4j-api-1.5.2.jar放入webapps\myapp\WEB-INF\lib\hibernatelib

现在我希望 slf4j-api-1.5.2.jar 会与休眠一起自动加载但它不起作用...Tomcat 无法找到如上.MF 中指定的jar 文件

问题:

  1. 我做错了什么吗?还是 Tomcat?
  2. 这个问题还有其他解决方案吗?

我已经尝试\检查了以下内容

  1. 检查文件末尾的换行符
  2. 如果我将 slf4j-api-1.5.2.jar 放在主 lib 文件夹中 - 错误消失 - 所以我知道它无法找到这个特定的 jar 文件
  3. 尝试了 list 文件中的相对、绝对路径

最佳答案

list 中唯一使用 Class-Path 属性的地方是当包含 list 的 jar 被称为可执行 jar 时使用 (" java -jar theFile.jar").

一些 servlet 容器似乎支持它,但根据 to this mailing list post (抱歉,没能这么快找到更权威的东西)它也没有在规范中指定。

据我了解,Web 应用程序通常使用单个类加载器加载它们的类。 “正确”解决该依赖性问题至少需要 2 个不同的类加载器。

hack-ish 解决方案可能是使用 jarjar或类似的工具将不同的库及其各自的依赖项打包在一起。

因此,您将生成一个包含 Hibernate 及其 apache-commons 库的 jar 和另一个包含 struts 及其 apache-commons 库的 jar。 apache-commons 库的每个副本将移动到不同的包(可能是 hibernate.org.apache.*struts.org.apache.*)以解决问题具有不同的类版本。

关于Tomcat 无法从 list 文件中选择类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731729/

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