我发现不可能运行依赖OpenCV jar文件的程序。我用“javac-cp opencv-300.jar*.java”编译过,但试图运行java程序意味着它找不到主类,所以我用java程序运行。抛出有关查找OpenCV类的异常的程序。
我试过java“-Djava.library.path=“-jar opencv-300。但它只返回“在opencv-300.jar中没有主清单属性”。我试着解压jar并用java-cp运行。程序程序返回“UnsatisfiedLinkError:java.library.path中没有opencv_java300”,但这似乎是一条糟糕的路径。
有人知道我该怎么让这该死的东西跑吗?在Windows 8和Ubuntu14.04LTS上试用,结果相同。请帮忙!
编辑:我可以上传一个公共Dropbox链接,这样人们就可以自己看看这是否有帮助。
您需要用jar文件打包静态库,将该静态库加载到临时文件,然后从该路径加载静态库。
在名为opencv的资源中创建一个文件夹,并将. dll
、. dylib
和. so
文件放在相应的文件夹中。
public class LoadLibrary {
public static void loadOpenCV() {
try {
InputStream inputStream = null;
File fileOut = null;
String osName = System.getProperty("os.name");
System.out.println(osName);
if (osName.startsWith("Windows")) {
int bitness = Integer.parseInt(System.getProperty("sun.arch.data.model"));
if (bitness == 32) {
inputStream = LoadLibrary.class.getResourceAsStream("/opencv/windows/x86/opencv_java300.dll");
fileOut = File.createTempFile("lib", ".dll");
} else if (bitness == 64) {
inputStream = LoadLibrary.class.getResourceAsStream("/opencv/windows/x64/opencv_java300.dll");
fileOut = File.createTempFile("lib", ".dll");
} else {
inputStream = LoadLibrary.class.getResourceAsStream("/opencv/windows/x86/opencv_java300.dll");
fileOut = File.createTempFile("lib", ".dll");
}
} else if (osName.equals("Mac OS X")) {
inputStream = LoadLibrary.class.getResourceAsStream("/opencv/mac/libopencv_java300.dylib");
fileOut = File.createTempFile("lib", ".dylib");
}
//make check for linux
if (fileOut != null) {
OutputStream outputStream = new FileOutputStream(fileOut);
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, length);
}
inputStream.close();
outputStream.close();
System.load(fileOut.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
更改静态{System.loadLibrary(Core.NATIVE_LIBRARY_NAME);}
到
加载库。loadOpenCV()
代码。
并尝试从Eclipse导出jar文件。它会很好用的。
当我使用 在intelij运行期间,一切正常。 在jar的案例中,我尝试了: 等等。它们导致正确的路径,例如: > 文件:/D:/Projects/myProject/target/classes/static/assets/config/fileName(对于toExternalForm) /D: /Projects/myProject/target/classes/static/assets/
问题内容: 我创建了一个JAR文件,如下所示: 我通过双击运行了这个JAR文件(它不起作用)。因此,我从DOS提示符运行了它,如下所示: 它引发了“无法加载主类”异常。所以我提取了这个JAR文件: 我运行了类文件: 运行良好。我不知道为什么JAR文件不起作用。请告诉我运行JAR文件的步骤 问题答案: 你需要在jar文件清单中指定Main-Class。 Oracle的教程包含完整的演示,但是这是从头
当我运行访问目录中其他文件的jar文件时,我得到以下: 线程“main”java.nio.file.nosuchfileException异常:src\filetobeaccessed.txt.lck在sun.nio.fs.windowsException.translateToioException(未知源)在sun.nio.fs.windowsException.reshrowasioExce
注意:test.class文件也使用了example.jar文件中的类文件,有自己的包结构。 我知道我可以将它们放在一个jar文件中,不幸的是我需要将test.class文件分开。
问题内容: 我如何从Java程序运行本地jar文件? jar文件不在Java调用程序的类路径中。 问题答案: 我建议你使用并启动一个新的JVM。 以下是一些入门知识:
问题内容: 我有一个名为helloworld.jar的JAR文件。为了运行它,我在命令行窗口中执行以下命令: 这可以正常工作,但是我如何双击执行它?我需要安装任何软件吗? 问题答案: 最简单的方法可能是升级或重新安装Java Runtime Environment(JRE)。 或这个: 打开Windows资源管理器,从“工具”中选择“文件夹选项…” 单击文件类型选项卡,向下滚动并选择JAR文件类型