【问题标题】:External library folder for Spring BootSpring Boot 的外部库文件夹
【发布时间】:2015-08-25 01:03:01
【问题描述】:

我想知道如何为我的 Spring Boot 应用程序外部化所有 jdbc 驱动程序,我不想在构建应用程序后将 jdbc 驱动程序插入到我的 fat jar 中。

有没有办法设置一个java vm参数,通知jar执行应该包含哪个外部文件夹?或者可能存在某种弹簧属性。

例如:

java  -DLib=file:\\\c:\Drivers -jar sample.jar

【问题讨论】:

    标签: java spring spring-mvc spring-boot


    【解决方案1】:

    这不就是类路径的用途吗?只要 jdbc 驱动程序 jar 在类路径上,这应该可以工作。像这样的:

    java -classpath /path/to/driver/jar -jar application.jar
    

    您也可以设置相同的 CLASSPATH 环境变量。

    【讨论】:

    • 不适用于 spring-boot 及其可执行 jar 格式,此外您传统上不能混合使用 jar 和类路径选项 - stackoverflow.com/questions/15930782/…
    • java cmd 忽略带有 jar 选项的“类路径”选项。
    【解决方案2】:

    请参阅有关 PropertiesLauncher 的文档:

    看起来您可以使用 loader.path 属性定义一个 lib 文件夹位置,其中包含要加载的 jar - 实际上 lib 文件夹(与 jar 内联)是默认位置:

    loader.path(如果为空)默认为 lib(表示本地目录或从存档运行的嵌套目录)

    【讨论】:

    • 我仍然无法让它与 loader.path 一起工作,它似乎忽略了我放在那里的任何东西。请你添加一个例子好吗?谢谢。
    • 没关系,事实证明,您需要使用 ZIP 布局构建 jar 才能使 loader.path 工作。
    • 使用如下: java -cp MyOwn.jar -Dloader.path=C:\Sandeep\lib -Dconsole.level=INFO -Dloader.main=abc.Main org.springframework.boot.loader .PropertiesLauncher --spring.config.name=application
    【解决方案3】:

    在运行 Spring boot jar 文件的情况下,CLASSPATH 和 -classpath 将不起作用。所以有以下选项可用:

    • 使用 -Dloader.path 例如 java -cp MyOwn.jar -Dloader.path=C:\Sandeep\lib -Dconsole.level=INFO -Dloader.main=abc.Main org.springframework.boot.loader.PropertiesLauncher --spring.config.name=application

    • 将其他 jar 放入 JRE/lib/ext 目录的另一种选择

    • 第三个选项,使用 WinRAR 应用程序打开 Spring Boot Jar 并将 jar 文件添加到 Spring Boot jar 中

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2015-11-28
      • 2015-09-10
      • 2018-02-21
      相关资源
      最近更新 更多