当前位置: 首页 > 知识库问答 >
问题:

Spring Boot加载JAR(应用程序依赖项和外部文件系统JAR)

濮升
2023-03-14

我试图弄清楚什么是最好的方法来设置Spring Boot应用程序,使其具有自己的jar依赖项,但当它作为java-jar命令运行时,将额外的jar添加到类路径中。哪种方法更有意义

>

  • 使用原始jar(不添加依赖项)并将所有jar(应用程序和运行时)放置在文件系统的文件夹中,并使用PropertiesLauncher指定jar文件夹的loader.path。

    使用fat jar(与应用程序jar一起使用),将附加jar放置在文件系统上,并以某种方式将需要添加到类路径的附加jar包括在内。不知道怎么才能做到这一点。

    还有其他更好的方法吗

  • 共有1个答案

    陈阳舒
    2023-03-14

    PropertiesLauncher设计用于处理fat jar,因此您应该能够保留fat jar,并在外部位置添加尽可能多的附加依赖项,例如使用Loader.path=/opt/app/lib:lib。我想这是你的第二个选择?如果这不起作用,我们可以在github上讨论。

     类似资料:
    • 我有一个带有spring boot的java项目,我需要加载应用程序。外部文件夹中的属性和依赖项jar。 我使用该应用程序进行了测试。类路径和加载程序中的属性。路径属性工作正常。 当我使用外部属性文件(我确信它们已被使用)时,加载程序。路径工作不正常,结果为ClassNotFound,因为JAR未加载。 此外,当我启动应用程序与**-Dloader.path=**xxx它的工作正常。 如何使用外部

    • 其中/usr/local/bin/kiaragen.jar是要执行的文件。现在,我尝试运行一个依赖于a.class文件的不同版本: 将文件添加到类路径: 提供以下异常: 如何将.class文件添加到类路径?

    • 我将Jetty(8和9)与LZ4压缩一起使用,我想使用LZ4的本机实现,它是C库的本机绑定。为了实现这一点,LZ4类应该用系统类加载器加载。 所以我的问题是,如何用Jetty中的系统类加载器加载一个外部jar。 将lib放入$jetty。home/lib/ext没有帮助,因为它是用扩展类加载器而不是系统加载器加载的。

    • 我正在使用maven shade插件创建一个胖罐子,其中也包括一些弹性城堡罐子。但这造成了问题,因为Bouncy Castle的未签名版本。

    • 我在我的项目中使用了maven shade插件将所有依赖项jar类重新定位到一个包下,例如org.shade.* 当我试图在其他应用程序中使用带阴影的jar作为maven依赖项时,它会拉出依赖项jar的。 我的期望是,当Uber/shaded jar包含为maven依赖项时,它不应该拉出任何其他依赖类jar,因为这些类已经在shaded jar中重新打包了。

    • 在我的项目中,我想使用特定于环境的属性文件。例如,如果我在开发中运行它,它应该使用应用程序。dev.properties,对于生产,它应该使用应用程序。产品属性等等。 我有下面两个文件在我的资源文件夹。 application.properties(用于生产) application.dev.properties(用于开发) 我有一个属性像下面的每个文件。 为了刺激 给德夫 我有一门课,如下所示