如何在Java中加载和使用本机库? [英] How do I load and use native library in java?
本文介绍了如何在Java中加载和使用本机库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Java类,调用一个本机方法并尝试加载库:
I've got a java class, calling a native method and trying to load library:
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");
}
}
"mylib.so"位于Main.class所在的目录中.
The "mylib.so" is in the directory, where Main.class is located.
当我运行java Main
时,出现以下异常:
When I run java Main
I get following exception:
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)
我该如何改变呢?
我尝试将库的完整路径设置为失败
I've tried setting library full path without success
推荐答案
执行以下操作:
- 使用System.loadLibrary("mylib");
- 将mylib.so复制到libmylib.so
- 运行java -Djava.library.path =/root/Main
这篇关于如何在Java中加载和使用本机库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文