我有一个包含嵌入式 Tomcat 的可执行 jar,它是通过 tomcat7-maven-plugin 创建的:tomcat7:exec-war。
我需要为一些 Jar 提供额外的类路径,因为我不能将它们直接包含在我的可执行 Jar 中。我如何提供这个类路径?
- 在启动我的可执行 Jar 之前,我无法执行
export CLASSPATH
,因为catalina.sh/.bat
删除了CLASSPATH
值。 - 我无法提供
setenv.sh/.bat
,因为可执行 Jar 是由 maven 插件创建的。 - 我无法从
catalina.properties
更新属性common.loader
,因为我无法控制这个由 maven 插件生成的文件。
注意:我不想在可执行 Jar 中指定 lib 的硬编码路径。
最佳答案
实际上,位于 WEB-INF/lib 的 WAR 文件中的任何 jar 文件都位于 WAR 文件类加载器的类路径中。
因此,您可以将额外的 jar 打包到 war 中。
我不熟悉 maven tomcat 插件,只是看看它的选项。它必须能够将额外的 jar 放入 war 文件(可能只是通过 compile
或“runtime”范围内的依赖项。这是一个标准功能。
如果您的附加 jar 必须在 war 之外,您必须在运行可执行 jar 时将其放入 Java 的系统类路径中(我猜是通过 -cp 参数)。或者您可以在 jar 的 MANIFEST.MF 文件中定义它的路径。
关于java - 在具有嵌入式 Tomcat 的 jar 上提供额外的类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44593555/