相关疑难解决方法(0)

如何从Eclipse设置java.library.path

如何为整个Eclipse Project设置java.library.path?我正在使用依赖于OS特定文件的Java库,需要找到.dll/.so/.jnilib.但应用程序始终退出并显示错误消息,指出在库路径中找不到这些文件.

我想配置整个项目以使用库路径.我试图将路径作为VM参数添加到eclipse中的某些运行配置,但这不起作用.

java eclipse configuration buildpath

207
推荐指数
8
解决办法
41万
查看次数

是-Djava.library.path = ...等效于System.setProperty("java.library.path",...)

我加载了一个放在里面的外部库./lib.这两个解决方案是否设置java.library.path等效?

  1. 执行jar时在控制台中设置路径:

    java -Djava.library.path=./lib -jar myApplication.jar
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在加载库之前在代码中设置路径:

    System.setProperty("java.library.path", "./lib");
    
    Run Code Online (Sandbox Code Playgroud)

如果它们是等价的,为什么在第二个解决方案中Java可以找不到库而第一个可以?

如果没有,有没有办法在代码中设置路径?

java

48
推荐指数
3
解决办法
6万
查看次数

如何在java中加载和使用本机库?

我有一个java类,调用本机方法并尝试加载库:

import java.io.UnsupportedEncodingException;

public class Main {

    public static native String getMyString(String s);

    /**
     * @param args
     * @throws UnsupportedEncodingException
     */
    public static void main(String[] args) throws UnsupportedEncodingException {
        // TODO Auto-generated method stub
        // System.out.println("here!");

        String s2 = getMyString("string text");
        for (Byte b : s2.getBytes("UTF-8")) {
            System.out.print(b);
            System.out.print(",");
        }

    }

    static {
        System.loadLibrary("mylib.so");
    }

}
Run Code Online (Sandbox Code Playgroud)

"mylib.so"位于Main.class所在的目录中.

当我跑步时,java Main我得到以下异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no mylib.so in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1856)
        at java.lang.Runtime.loadLibrary0(Runtime.java:845)
        at java.lang.System.loadLibrary(System.java:1084)
        at Main.<clinit>(Main.java:24)
Run Code Online (Sandbox Code Playgroud)

我应该为此改变什么呢?

我试过设置库完整路径但没有成功

java native

3
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×3

buildpath ×1

configuration ×1

eclipse ×1

native ×1