java - 如何在pom文件中正确添加本地JNI jar?

标签 java maven java-native-interface

我有一个提供 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 设置为 truedescribed 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/

相关文章:

java - 如何从虚拟机调用 native 函数?

java - 如何在 TestNG 断言中使用 OR 条件

java - 运行时执行输出

java - Eclipse 中的 Google 数据(gdata)与应用程序引擎,java

maven - 直接从可执行jar运行Cucumber测试

java - Android JNI 调用方法 GetStringUTFLength 崩溃

Android 使用 JNI 而不使用静态变量

java - Hibernate - 对具有枚举属性的 Bean 使用 native 查询和别名?

Spring初始化在项目外完成

java - 如何打包和运行 twill 示例应用程序