Я сделал небольшое приложение, которое читает из Excel (файл xls) и отображает содержимое в JTable. В eclipse все работает нормально, но когда я создаю файл jar и пытаюсь его запустить, у меня возникает следующая проблема:
java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/Row
Странная вещь, которую я обнаружил, заключается в том, что проблема связана с строкой, когда Workbook и Sheet вызываются перед строкой и не вызывают никаких проблем (по крайней мере, из того, что я вижу).
Я много исследовал, и в основном это похоже на то, что файлы jar не находятся в Class-Path, но открывая jar и файл манифеста, я вижу, что все jar-файлы присутствуют.
Class-Path: poi-ooxml-4.0.1.jar poi-4.0.1.jar commons-codec-1.11.jar commons-collections4-4.2.jar commons-math3-3.6.1.jar commons-compress-1.18.jar curvesapi-1.05.jar poi-ooxml-schemas-4.0.1.jar xmlbeans-3.0.2.jar
Вот что у меня в файле pom.xml:
<build>
<plugins>
<plugin>
<!-- Build an executable JAR -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>./</classpathPrefix>
<mainClass>com.clientdb.classes.DynamicRegForm</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>4.0.1</version>
</dependency>
</dependencies>
Я также попытался загрузить файлы jar и добавить их в проект вместо добавления зависимости к файлу pom, и все та же ошибка. Любые идеи?




Вероятно, вы получаете это, только когда запускаете jar потому что зависимости недоступны / упакованы внутри него.
Попробуйте создать "толстая банка" (также известный как убер-банка), он упакует все ваши зависимости внутри jar:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<finalName>YOUR_JAR_FINAL_NAME</finalName>
</configuration>
</plugin>
</plugins>
</build>
Документация, относящаяся к maven-shade-plugin, может быть найдено здесь.
Обновлено: Поскольку вы используете исполняемый файл jar, вы можете следовать этот раздел документации, относящемуся к Исполняемые файлы JAR
Это сработало отлично! Большое спасибо и с Новым годом !!