Я получаю эту ошибку при попытке запустить приложение с терминала (после его компиляции в банку с использованием maven install
):
Exception in thread "main" java.lang.NoClassDefFoundError: org/bytedeco/javacv/OpenCVFrameGrabber
at org.wcapture.server.WCapture.captureFrame(WCapture.java:17)
at org.wcapture.server.App.main(App.java:17)
Caused by: java.lang.ClassNotFoundException: org.bytedeco.javacv.OpenCVFrameGrabber
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
Однако при запуске в Eclipse он работает отлично.
Кажется, что maven не включает зависимости при компиляции приложения в jar.
Буду признателен за любую помощь с этим. Спасибо.
@AndrewS maven-jar-plugin
, версия 3.1.0. addClasspath
установлен на true
, а classpathPrefix
установлен на lib/
. mainClass
настроен на основной класс моего приложения. Он работает правильно, когда у меня нет зависимостей в моем коде, работая только с моими собственными классами. Извините, я немного новичок в Maven, поэтому я в основном ковыряюсь здесь и там, когда дело доходит до POM.
Попробуйте открыть созданную банку и убедитесь, что в нее включены зависимые банки. И проверьте путь к классам манифеста, чтобы убедиться, что на эти jar-файлы есть ссылки.
@AndrewS кажется, что эти банки не включены, я вижу только свои классы, файл манифеста, который пытается получить доступ к этим зависимостям, и файл pom.
bytedeco
отсутствует, поэтому вам следует добавить зависимость org.bytedeco в свой pom.xml
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>1.4.1</version>
</dependency>
Какой плагин для построения (если есть) определен в pom? Этот может помочь.