java - 在具有嵌入式 Tomcat 的 jar 上提供额外的类路径

标签 java maven tomcat

我有一个包含嵌入式 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/

相关文章:

java - 返回两个集合的交集的具有不同签名的方法 (Java)

java - 使用 PowerMockito 运行 Cobertura 抛出 java.lang.OutOfMemoryError : PermGen space

html - 使用带有 cors.preflight.header 过滤器的 ajax 和 Tomcat 的 RESTful 服务中的 http 预检 header 问题

java - 如何在linux中升级当前项目的Java版本?

java - tomcat 错误

java - 这个 JPA "cached hashCode"模式有什么陷阱吗?

java - Android - 定时器类

java - 在spring中创建上传功能,出错抛出异常[处理程序处理失败;嵌套异常是 java.lang.StackOverflowError

android - Droid-Fu 构建错误

java - Eclipse无法加载资源目录(构建路径问题)