【问题标题】:How to configure additional classpath in SpringBoot?如何在 Spring Boot 中配置额外的类路径?
【发布时间】:2016-11-09 02:42:45
【问题描述】:

我想制作一个独立的网络应用程序。我在使用 SpringBoot 时遇到了一些问题。

我的应用是来自 SpringBoot 的一个 jar 文件。

但我的应用程序通常需要jdbc驱动jar。我想为我的应用程序排除 jdbc 驱动程序 jar,并从 lib 文件夹中读取库 jar。

但是 SpringBoot 的 lib 文件夹是 BOOT-INF/libfinal static。所以,我想为 jdbc 驱动 jar 添加外部类路径(lib)。

如何在 SpringBoot 中配置额外的类路径。有货吗?

【问题讨论】:

    标签: java spring spring-boot external q


    【解决方案1】:

    您可以使用loader.path 参数定义外部lib 文件夹的位置。此文件夹下的所有 jar 都将添加到类路径中。例如,如果您想将 C:\extLib 定义为您的外部 lib 文件夹,您可以执行以下操作:

    java -Dloader.path=/C:/extLib/ -jar aapName.jar
    

    为此,您需要使用 PropertiesLauncher。有两种方法可以做到这一点:

    选项 1

    更新项目 pom.xml 并添加以下标签:

    <configuration>  <!-- added -->
      <layout>ZIP</layout> <!-- to use PropertiesLauncher -->
    </configuration
    

    有效的构建标签,更新后如下图:

    <build> 
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>  <!-- added -->
                    <layout>ZIP</layout> <!-- to use PropertiesLauncher -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    选项 2

    从命令行启动应用程序时使用 PropertiesLauncher:

    java -cp aapName.jar -Dloader.path=/C:/extLib/ org.springframework.boot.loader.PropertiesLauncher
    

    参考:
    How to add jars to SpringBoot classpath with jarlauncher

    【讨论】:

    • 这适用于属性还是仅适用于 jar?
    【解决方案2】:

    您可以从 Spring Boot 中参考以下链接:

    https://docs.spring.io/spring-boot/docs/current/reference/html/executable-jar.html#executable-jar-property-launcher-features

    您可以使用 loader.path 属性来定义 lib 文件夹位置

    【讨论】:

    • 感谢您的回答。但它现在正在工作。我的应用程序:/dev/myapp.jar,外部库:/dev/lib/ojdbc6.jar。设置“loader.path”,但库没有加载。
    • @FIGHTINGMAMORU,您的评论令人困惑。先说working,后说library was not loaded。你搞定了吗?
    • 我认为他的意思是“不”工作而不是“现在”工作。我对独立的 spring boot jar 有类似的问题。它似乎没有使用 loader.path 加载单个 jar。它必须是目录吗?我不一定想用我的依赖 jar 加载文件夹中的所有内容
    【解决方案3】:

    在我的情况下,在 windows 平台上查找外部 lib 文件夹需要 " 引用

    java -cp ScoreExtractionApp.jar -Dloader.path="lib" -Dloader.main=com.sample.score.ScoreExtraction.ScoreExtractionApplication org.springframework.boot.loader.PropertiesLauncher
    

    【讨论】:

      【解决方案4】:

      您可以使用 maven jar 插件在 maven 中配置类路径

      <plugin>
          <artifactId>maven-jar-plugin</artifactId>
            <configuration>
              <archive>
                  <manifestEntries>
                      <Class-Path>conf/</Class-Path>
                  </manifestEntries>
             <manifest>
                 <addClasspath>true</addClasspath>
                 <classpathPrefix>lib/</classpathPrefix>
             </manifest>
          </archive>
         </configuration>
      </plugin>
      

      【讨论】:

        猜你喜欢
        • 2020-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-13
        • 1970-01-01
        • 1970-01-01
        • 2019-08-08
        • 2016-03-13
        相关资源
        最近更新 更多