2017-02-13 3 views
0

Я использую https://github.com/patternconsulting/opencv включить OpenCV 3.2.0 в моих мавенаява проект.Maven java.lang.NoClassDefFoundError: ню/шаблон/OpenCV ошибка

Вопрос, который я столкнулся в том, что, когда я использую mvn install для создания файла банки, а затем запустить файл банка java -jar app.jar я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: nu/pattern/OpenCV 
    at com.example.Application.<clinit>(Application.java:21) 
Caused by: java.lang.ClassNotFoundException: nu.pattern.OpenCV 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

ниже отрывок из моего pom.xml файл

 <dependency> 
      <groupId>org.openpnp</groupId> 
      <artifactId>opencv</artifactId> 
      <version>3.2.0-1</version> 
     </dependency> 
    </dependencies> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-jar-plugin</artifactId> 
       <version>3.0.2</version> 
       <configuration> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <addDefaultImplementationEntries>true</addDefaultImplementationEntries> 
          <mainClass>com.example.Application</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

и ниже приводится выдержка из моего класса, который имеет основной метод:

public class Application { 

    static { 
     OpenCV.loadShared(); 
    } 


    public Application() throws Exception { 
     // some code here 
    } 

    public static void main(String[] args) { 
      new Application(); 
    } 

любая идея, что может быть причиной этого и как его решить?

Благодаря

ответ

1

Зависимости не добавляются автоматически в файл банку, только свой собственный код.

У вас есть несколько вариантов, потому что вы не первый, у кого есть эта проблема. На вашем текущем уровне мастерства я бы предложил задуматься о создании uber-jar вместо этого (так что все ваши зависимости также входят в ваш файл jar).

Посмотрите на https://stackoverflow.com/a/1834905/53897, где подробно рассказывается, как это сделать.

Смежные вопросы