【发布时间】:2015-05-14 12:56:47
【问题描述】:
我正在使用 Ant 构建 java 项目,并且我正在使用 Ivy 进行依赖管理。 ant build 中有两个选项用于在部署期间解决依赖关系。一种是 lib 模式,如果启用此模式,所有依赖的 jar 都会下载到项目的 WEB-INF/lib 文件夹中。其他是不下载任何 jar 的清单模式。在部署期间,MANIFEST.MF(具有所有依赖 jar 的类路径)文件将用于解析 jar。 项目在lib模式下运行正常,但启用manifest时,构建成功但部署失败。
请告诉我如何解决这个问题或可能是什么原因?
注意:Tomcat服务器默认启用VWL。
提前致谢。
【问题讨论】:
-
您的 jar 必须放置在 MENIFEST.MF 中提到的类路径的某个位置,如果 jar 不在您的战争库中,则它们必须在您的容器库中 [tomcat 或 jboss 库]
-
感谢纳文的回复。我检查了清单中的类路径,并且 jar 仅存在于该路径中。所以路径应该没有问题,我猜tomcat没有使用这个manifest文件。你的意思是 jars 必须是 lib 文件夹中的任何一个?
-
那条路径是什么?是您的战争库还是网络服务器库位置?如果超出该位置,则必须在系统 class_path 环境变量中设置它们
-
这可能不是一个好主意,仅针对特定项目,我们无法修改系统类路径。假设如果模式设置为清单,它会从清单文件中获取路径值并解决问题。现在的问题是,它没有采用该类路径。这些 jars 位于一个共享位置,该位置没有库。
-
我怀疑类加载器会从容器外部挑选罐子。不过你可以试试。