Найдены некоторые другие вопросы, касающиеся этой проблемы, но ни один из них, кажется, не имеет правильного решения для решения моей проблемы.
У меня есть внешний JAR-файл, который необходимо включить в мой сгенерированный jar-файл.В настоящее время я делаю это с:
<dependency>
<groupId>be.april.meter</groupId>
<artifactId>JRPiCam</artifactId>
<version>1.1.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/jrpicam-1.1.1.jar</systemPath>
</dependency>
Когда я просто запускаю мой основной класс в IDE, все работает нормально, как и должно.Однако при попытке запустить сгенерированный Maven JAR я получаю ошибку NoClassDefFoundError
.Я уже пытался сгенерировать «толстую» / «затененную» банку и все такое, но ничего из этого не помогло.
Я также пытался установить jar с помощью подключаемого модуля Maven (https://eureka.ykyuen.info/2014/06/10/maven-include-system-scope-dependency-in-maven-assembly-plugin/),, но это дает ту же ошибку, что и мое текущее решение.
Full pom.xmlможно найти здесь:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>be.april.meter</groupId>
<artifactId>April-Meter</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>be.april.meter.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>be.april.meter</groupId>
<artifactId>JRPiCam</artifactId>
<version>1.1.1</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/jrpicam-1.1.1.jar</systemPath>
</dependency>
</dependencies>
Заранее спасибо.
- Редактировать: казалось, что log4j тоже не загружается. Я исправил это, добавив:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<includeScope>compile</includeScope>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
Это приводит к тому, что jar JRPiCam находится в выходном каталоге / lib вместе с зависимостями log4j, но JRPiCam по-прежнему не работает.