如何将库添加到我的.jar文件中

时间:2017-12-26 22:19:53

标签: java opencv jar

我有一个关于Netbeans的项目,可以使用opencv库。

我已经设置了项目属性&gt;运行:<div class="container-fluid content"> <div class="row"> <div class="col-sm col-6"> <div class="stats"> <div class="big">111</div> <div class="small">COLUMN 1</div> </div> </div> <div class="col-sm col-6"> <div class="stats"> <div class="big">222</div> <div class="small">COLUMN 2</div> </div> </div> <div class="col d-none d-md-block"> <div class="stats"> <div class="big">333</div> <div class="small">COLUMN 3 (DISAPPEARS ON LOW RES)</div> </div> </div> <div class="col-sm col-6"> <div class="stats"> <div class="big">444</div> <div class="small">COLUMN 4</div> </div> </div> <div class="col-sm col-6"> <div class="stats"> <div class="big">555</div> <div class="small">COLUMN 5</div> </div> </div> </div> </div>

如果我在NetBeans上运行该项目,它就可以运行。

但是,当我构建JAR文件并尝试从cmd -Djava.library.path="C:\opencv\build\java\x64"时,它会抛出

  

java.lang.NoClassDefFoundError:org / opencv / core / Mat

我在制作罐子时缺少什么?

修改

在构建.jar的目录中,我创建了一个名为java -Djava.library.path="C:\opencv\build\java\x64" -jar myjar.jar的目录,我在内部放了opencv-300.jar:如果我执行lib它就可以了...... 有没有办法在不运行该命令的情况下执行应用程序?

1 个答案:

答案 0 :(得分:0)

您可以通过两种方式加载本机库文件(.dll / Windows或.so / Linux):

1)通过提供完整路径加载文件:

System.load("my/full/path/opencv.dll");

2)如果您的本机文件位于Java库路径中:

System.loadLibrary("opencv");

请注意,在第二种情况下,您只需提供原生文件的名称(不带扩展名)。

默认Java库路径取决于操作系统:

在Windows上,它映射到PATH
在Linux上,它映射到LD_LIBRARY_PATH
在OS X上,它映射到DYLD_LIBRARY_PATH

如果要设置自己的Java库路径:

try {
        System.setProperty("java.library.path","YOUR/PATH");
        Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
        fieldSysPath.setAccessible(true);
        fieldSysPath.set(null, null);
    } catch (Exception ex) {
        System.out.println("Failed to set Java Library Path: " + ex.getMessage);
    }