【问题标题】:Provide additional classpath on jar having embedded Tomcat在具有嵌入式 Tomcat 的 jar 上提供额外的类路径
【发布时间】:2017-11-19 11:38:58
【问题描述】:

我有一个包含嵌入式 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 的硬编码路径。

【问题讨论】:

    标签: java maven tomcat


    【解决方案1】:

    实际上,WEB-INF/lib WAR 文件中的任何 jar 文件都在 WAR 文件类加载器的类路径中。 因此,您可以将额外的 jar 打包到 war 中。 我不熟悉 maven tomcat 插件,但只看它的选项。它必须能够将其他 jar 放入 war 文件中(可能只是通过 compile 或“运行时”范围内的依赖项。这是一个标准功能。

    如果您的附加 jar 必须在战争之外,您必须在运行可执行 jar 时将其提供给 Java 的系统类路径(我猜是通过 -cp 参数)。或者您可以在 jar 的 MANIFEST.MF 文件中定义它的路径。

    【讨论】:

    • 谢谢,但我的附加 jar 必须在战争/可执行 jar 之外。我认为当我们将它与 -jar 一起使用时,它会被忽略。我试过了,它没有接缝工作。此外,我不想在 MANIFEST.MF 中指定 lib 的硬编码路径(问题已更新)。
    猜你喜欢
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 2011-07-09
    • 2012-07-13
    • 2012-02-18
    相关资源
    最近更新 更多