2017-03-22 21 views
2

我做了JavaFX項目罰款。運行可執行的JAR拋出的java.library.path錯誤沒有opencv_java310但運行在它使用opencv 3.1 Java庫在IDE

問題是我的項目完全從IDE運行,但是當我嘗試運行dist文件夾中的.jar文件時,它會拋出不滿意的鏈接錯誤。

我搜索關於這個問題已經發現許多答案,但沒有解決mine.I認爲可能是這些解決方案都是早期版本。

主要方法如下: -

public static void main(String[] args) { 
     System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
     launch(args); 
    } 

我還設置庫路徑正確:

enter image description here

,也有.dll文件在指定地點

enter image description here

如果我從IDE運行,該應用程序完全按預期運行!

PS:我也試圖把在Eclipse項目,並嘗試創建罐子,但同樣的事情發生,它運行在IDE而不是當我運行jar

錯誤的詳細信息:

java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:389) 
     at com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:328) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at sun.launcher.LauncherHelper$FXHelper.main(Unknown Source) 
Caused by: java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path 
     at java.lang.ClassLoader.loadLibrary(Unknown Source) 
     at java.lang.Runtime.loadLibrary0(Unknown Source) 
     at java.lang.System.loadLibrary(Unknown Source) 
     at com.Rein.rteapp.MainApp.main(MainApp.java:129) 
+0

我有這樣的疑問也。你有沒有想過這個? – mccoyLBI

+0

@mccoyLBI是的。感謝提問或者我只是想着我有這個問題,因爲解決方案非常直觀。 :)現在我知道可能有像我們這樣的少數人,所以我只是把它作爲答案! –

+0

5分鐘前我就明白了這一點,而這正是你所說的!如果我只是早點檢查過... – mccoyLBI

回答

2

我找到了解決方案。

我解決它通過使用相對路徑,無論我需要參考一些外部resources.So任何你使用System.getProperty("user.dir")它是指你的應用程序的根文件夾。

例如: - 如果你還引用是這樣的: -

String path = System.getProperty("user.dir") + "\\MyResourceFolder"; 

然後,你將不得不「MyResourceFolder」複製到其中創建(旁邊的jar文件)的jar文件夾。

該解決方案在IDE中運行,因爲我們已經將資源文件夾複製到我們的Project根文件夾中,但是當我們創建jar文件時,那些資源文件不會被複制到jar文件夾,因此我們必須手動複製所有這些資源文件夾以及它在創建Jar文件的位置旁邊的內容,用於在運行jar時維護相對路徑。

相關問題