РЕДАКТИРОВАТЬ: см. Редактирование ниже. Этот вопрос все еще требует внимания, потому что изменение pom, как было предложено, не изменило поведение даже после очистки.
У меня есть проект Java Maven с плагином для создания автономного JAR, который до сих пор работал отлично. В пом. xml,
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<mainClass>ptcs.App</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Я недавно хотел использовать класс Fraction из org. apache .commons.math3, поэтому я сделал следующее. В моем коде
import org.apache.commons.math3.fraction.Fraction;
Добавление зависимости к pom. xml,
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-math3</artifactId>
<version>3.6.1</version>
</dependency>
EDIT: изначально тест был в pom, но я удалил его. Там не было никаких изменений в поведении. Я также убрал проект.
Я работаю в VS Code, который помещает небольшую кнопку «Выполнить» над public static void main
. Эта кнопка запуска работает, но при попытке запустить отчеты JAR не существует определения класса для Fraction. Также запуск mvn java:exec ...
сообщает об этой же проблеме.
Что я делаю не так и почему он работал до добавления этой зависимости?
Ошибка, которую я получаю при запуске JAR, составляет
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache
/commons/math3/fraction/Fraction
at ptcs.App.main(App.java:39)
Caused by: java.lang.ClassNotFoundException:
org.apache.commons.math3.fraction.Fraction
at
java .base / jdk.internal.loader.BuiltinClassLoader.loadClass (BuiltinClassLoader. java: 583) в java .base / jdk.internal.loader.ClassLoaders $ AppClassLoader.loadClass ( ClassLo
aders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 1 more