Отсутствует класс Java после "установки maven", работает при запуске приложения в IDE

Я получаю эту ошибку при попытке запустить приложение с терминала (после его компиляции в банку с использованием 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.

Буду признателен за любую помощь с этим. Спасибо.

Какой плагин для построения (если есть) определен в pom? Этот может помочь.

Andrew S 01.05.2018 15:54

@AndrewS maven-jar-plugin, версия 3.1.0. addClasspath установлен на true, а classpathPrefix установлен на lib/. mainClass настроен на основной класс моего приложения. Он работает правильно, когда у меня нет зависимостей в моем коде, работая только с моими собственными классами. Извините, я немного новичок в Maven, поэтому я в основном ковыряюсь здесь и там, когда дело доходит до POM.

Pe-Ter 01.05.2018 20:53

Попробуйте открыть созданную банку и убедитесь, что в нее включены зависимые банки. И проверьте путь к классам манифеста, чтобы убедиться, что на эти jar-файлы есть ссылки.

Andrew S 01.05.2018 21:04

@AndrewS кажется, что эти банки не включены, я вижу только свои классы, файл манифеста, который пытается получить доступ к этим зависимостям, и файл pom.

Pe-Ter 01.05.2018 21:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
46
1

Ответы 1

bytedeco отсутствует, поэтому вам следует добавить зависимость org.bytedeco в свой pom.xml

<dependency>
    <groupId>org.bytedeco</groupId>
    <artifactId>javacv-platform</artifactId>
    <version>1.4.1</version>
  </dependency>

Другие вопросы по теме