我有一个提供 REST API 的 SpringbootApplication,我们将其称为 fetchPrediction
。
此 fetchPrediction
API 使用 JAR 文件(即 JNI)内定义的一些类。
我的应用程序可以编译并启动,但是,如果我调用 fetchPrediction
API,它就会失败。
当我在 mvn clean install
之后对创建的 jar 执行 jar -xvf 操作时,我没有看到应通过包含 jar 依赖项来选取的类。
此外,当我尝试运行 Jar 文件时,我会看到 JAR 内的类的 ClassNotDefinedException
。
我怎样才能正确地做到这一点?
目前我正在导入 JAR 依赖项,如下所示:
<dependency>
<groupId>jarcom.jarlib</groupId>
<artifactId>jarname</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/jarname.jar</systemPath>
</dependency>
最佳答案
在 Spring Boot 应用程序中,通常没有 JNI 部分。此外spring-boot-maven-plugin默认情况下不包含 <scope>system</scope>
的依赖项这就是为什么您在生成的 jar 中看不到 jar 文件的原因。
您必须配置 spring-boot-maven-plugin 并将 includeSystemScope 设置为 true
如described in the docs for the plugin .
<project>
...
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.2.4.RELEASE</version>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</execution>
</executions>
...
</plugin>
...
</plugins>
...
</build>
...
</project>
关于java - 如何在pom文件中正确添加本地JNI jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60045875/