链接多个库的JavaJNI
我已经编写了一些代码来加载Java中的共享对象。以下是示例代码:链接多个库的JavaJNI,java,c++,linux,java-native-interface,unsatisfiedlinkerror,Java,C++,Linux,Java Native Interface,Unsatisfiedlinkerror,我已经编写了一些代码来加载Java中的共享对象。以下是示例代码: public class helloworld { static { System.loadLibrary("calcJava"); } public static void main(String [] args) { System.out.println("Hello");
public class helloworld
{
static
{
System.loadLibrary("calcJava");
}
public static void main(String [] args)
{
System.out.println("Hello");
}
}
共享对象“calcJava”进一步依赖于另一个共享对象。libMath.so
当我尝试运行这个程序时,它总是给我未满足的linkerror,带有dependent.so(libMath.so)中未定义的符号错误
在执行java程序之前,我要做的是:
1) 将LD_LIBRARY_PATH设置为.so
2) 设置jar文件的类路径
3) 使用“javahelloworld-Djava.library.path=/path/to/shared/object1:/path/to/shared/object2”运行java程序
有人能解释一下为什么我会出现不满意的链接错误吗
这是stacktrace
线程“main”java.lang.UnsatifiedLinkError:/path/to/libcalcJava.so:/path/to/libcalcJava.so中出现异常:未定义的符号:xxx\uxxx\uxxx\uxx
位于java.lang.ClassLoader$NativeLibrary.load(本机方法)
位于java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1938)
位于java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
位于java.lang.Runtime.loadLibrary0(Runtime.java:870)
位于java.lang.System.loadLibrary(System.java:1122)
在helloworld。(helloworld.java:6)
谢谢请添加堆栈跟踪。
System.loadLibrary(“Math”);
在System.loadLibrary(“calcJava”);
前面缺少堆栈跟踪。在问题本身中添加了堆栈跟踪。@Schrieveslaach-我尝试过在calcJava之前加载数学库。但导致了相同的错误。