Viv*_*and 6 java eclipse opencv javafx executable-jar
从Eclipse执行时,代码工作正常.我正在使用OpenCV 2.4.11和JavaFX for UI.当我从Eclipse导出可执行Jar并从cmd运行它时,我得到以下异常:
我跟很多张贴在这里的SO和OpenCV论坛(1,2,3,4),但是,没有一个答案似乎帮助我.
我已经将OpenCV jar添加为库,而Native Library链接到/ build/java/x64,如SO答案中所建议的那样.
发生在的System.loadLibrary(Core.Native_Library_Name)例外,我查了Native_Library_Name和OpenCV的版本是一样的一个我在我的项目进口.
public class CustomFrame extends Application{
@Override
public void start(Stage primaryStage){
Group root = new Group();
Canvas canvas = new Canvas(1440, 840);
ImageView imageView = new ImageView();
imageView.setFitHeight(canvas.getHeight());
imageView.setFitWidth(canvas.getWidth());
new FrameController().startCamera(imageView);
root.getChildren().addAll(imageView, canvas);
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
public static void main(String[] args)
{
// load the native OpenCV library
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
如果有人认为我错过了什么,请告诉我.
在UnsatisfiedLinkError当应用程序试图加载本地库就像被抛出
.so 在Linux中, .dll 在Windows或 .dylib 在Mac中 并且该库不存在.
具体来说,为了找到所需的本机库,JVM同时查看PATH environment variable和java.library.path系统属性.
有时,如果应用程序已加载本机库,并且同一应用程序尝试再次加载它,则也可能导致此错误.
首先,我们必须验证System.loadLibrary方法中传递的参数是否正确并且库实际存在.请注意,不需要扩展库.因此,如果您的库已命名SampleLibrary.dll,则必须将SampleLibrary值作为参数传递.
此外,如果您的应用程序已经加载了库,并且应用程序尝试再次加载它,UnsatisfiedLinkError那么JVM将抛出该库.此外,您必须验证应用程序java.library.path或PATH environment library应用程序中是否存在本机库.如果仍无法找到库,请尝试提供System.loadLibrary方法的绝对路径.
要执行应用程序,请使用-Djava.library.path参数显式指定本机库.例如,使用终端(Linux或Mac)或命令提示符(Windows),通过发出以下命令来执行您的应用程序:
java -Djava.library.path= "<path_of_your_application>" –jar <ApplicationJAR.jar>
Run Code Online (Sandbox Code Playgroud)
你错过了实际的命令.使用以下内容
java -Djava.library.path="C:\Opencv2.1.11\opencv\build\java\x64" -jar BlurDetector.jar
Run Code Online (Sandbox Code Playgroud)
要么
java -Djava.library.path="C:\Opencv2.1.11\opencv\build\java" -jar BlurDetector.jar
Run Code Online (Sandbox Code Playgroud)
而不是你的命令
java -Djava.library.path="C:\Users\vivek_elango\Desktop" -jar BlurDetector.jar // you have given wrong path of your application
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2158 次 |
| 最近记录: |