2017-02-13 75 views
0

我使用https://github.com/patternconsulting/opencv包括OpenCV的 3.2.0在我行家的Java項目。行家java.lang.NoClassDefFoundError:NU /模式/ OpenCV的錯誤

,我面臨的問題是,當我使用mvn install生成一個jar文件,然後運行jar文件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

依賴不會自動添加到您的jar文件,只有您自己的代碼。

你有幾個選擇,因爲你不是第一個有這個問題。在你當前的技能水平下,我會建議尋求創建一個超級罐子(所以你所有的依賴關係都放在你的jar文件中)。

看看https://stackoverflow.com/a/1834905/53897詳細說明如何從這裏開始。