Can';在java中加载本机库(OpenCV)
我在java+opencv(eclipse)中的应用程序有问题 它在eclipse中工作得很好。当我从我的项目中制作jar时,它在我的笔记本电脑上工作,但在运行jar的不同PC上(没有IDE的PC),我无法加载opencv。 当前加载openCV的方法:Can';在java中加载本机库(OpenCV),java,opencv,Java,Opencv,我在java+opencv(eclipse)中的应用程序有问题 它在eclipse中工作得很好。当我从我的项目中制作jar时,它在我的笔记本电脑上工作,但在运行jar的不同PC上(没有IDE的PC),我无法加载opencv。 当前加载openCV的方法: static { try { int bitness = Integer.parseInt(System.getProperty("sun.arch.data.model")); if(bitness =
static {
try {
int bitness = Integer.parseInt(System.getProperty("sun.arch.data.model"));
if(bitness == 32){
System.out.println("32 bit detected");
System.load("C:/OpenCV/opencv/build/java/x86/opencv_java248.dll");
}
else if (bitness == 64){
System.out.println("64 bit detected");
System.load("C:/OpenCV/opencv/build/java/x64/opencv_java248.dll");
}
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load.\n" + e);
System.exit(1);
}
}
我收到关于UnsatifiedLinkError的错误消息。当我试图在catch部分打印e.getMessege()时,我得到了一条空消息
当我使用
System.loadLibrary(“opencv_java248”)或
System.loadLibrary(Core.NATIVE_LIBRARY_NAME)带和不带-Djava.LIBRARY.path=(pathToLibrary)具有良好的opencv_java248;版本,我的意思是我在路径或库版本中没有任何打字错误,我有错误消息:
UnsatisfiedLinkError:
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
...
--编辑
dependency walker仅显示缺少的msjava.dll。但这不应该是个问题。。
我更改了opencv文件夹,现在我有了C:/opencv/build/java/
仍然没有什么只是一些想法:您可能希望安装在/opencv而不是/opencv/opencv。我认为它对安装位置做出了假设,但不确定如何推翻这些假设。您的系统路径中是否有这些或适当的备选方案?C:\opencv\build\java\x86;C:\opencv\build\x86\vc10\bin。我很快就会将我的应用程序部署到不同的地方,我很想知道你是否找到了解决方案。另一个想法是——当DLL无法找到它的一些依赖项时,我收到了不满意的链接错误。在不同的PC上运行类似于opencv_java248.dll上的Dependency Walker的程序可能会对这个问题有所帮助。在我开发应用程序的PC上安装了opencv/opencv,所以我也在不同的PC上使用它。还获得了系统路径上带有opencv dll的文件夹;明天我将写一篇关于依赖沃克的文章。