Как правильно добавить локальный JNI-файл в pom-файл? - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть SpringbootApplication, который предоставляет REST API, назовем его fetchPrediction.

Этот fetchPrediction API использует некоторые классы, определенные в файле JAR, который является JNI.

Мое приложение компилируется и запускается, однако, если я вызываю fetchPrediction API, оно завершается ошибкой.

Когда я выполняю jar -xvf на созданном jar после mvn clean install, я не вижу классов, которые должны быть подобраны путем включения зависимости jar.

Кроме того, когда я пытаюсь запустить файл Jar, я вижу ClassNotDefinedException для классов внутри JAR.

Как я могу сделать это правильно?

В настоящее время я импортировать JAR-зависимость следующим образом:

    <dependency>
        <groupId>jarcom.jarlib</groupId>
        <artifactId>jarname</artifactId>
        <version>1.0</version>
        <scope>system</scope>
        <systemPath>${project.basedir}/jarname.jar</systemPath>
    </dependency>

1 Ответ

1 голос
/ 03 февраля 2020

В приложении с весенней загрузкой у вас обычно нет частей JNI. Кроме того, spring-boot-maven-plugin по умолчанию не включает зависимости с <scope>system</scope>, поэтому вы не видите файл jar в получающемся jar.

Вы должны необходимо настроить плагин spring-boot-maven-set и установить для includeSystemScope значение true как , описанное в документации по плагину .

<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>
...