我编写了一个独立的 Java 程序(可行),它通过生成 libipmi_agent.so 库调用从 C 程序创建的 native 库,但是在 tomcat 的网络应用程序中运行它是给出以下错误:
native library call java.lang.reflect.InvocationTargetException
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
...
java.lang.UnsatisfiedLinkError: org.qcri.power.util.IPMIAgent.ipmi_agent_init()I
org.qcri.power.util.IPMIAgent.ipmi_agent_init(Native Method)
org.qcri.power.util.IPMIAgent.main(IPMIAgent.java:18)
...
这是我的 Java 类:
package org.qcri.power.util;
public class IPMIAgent
{
private native int ipmi_agent_init();
private native void ipmi_agent_close();
private native int ipmi_agent_read_current_value();
static
{
System.loadLibrary("ipmi_agent");
}
// The main program
public static int main(String[] args)
{
int i, v=0;
IPMIAgent ipmiagent = new IPMIAgent();
ipmiagent.ipmi_agent_init();
for (i = 0; i < 100; i++)
{
try{
v = ipmiagent.ipmi_agent_read_current_value();
System.out.println("Current value is " + v);
Thread.currentThread().sleep(1000);
}
catch(InterruptedException ie){
}
}
return v;
}
}
libipmi_agent.so 与上面的 Java 类在同一类文件夹中/webapps/myapp/WEB_INF/classes 下。
文件的位置是否正确?有人有想法吗?
提前致谢。
最佳答案
错误告诉您它找不到库,所以不,那个位置不正确。
(FAQ中的错误是不同的,但问题是一样的,那里的解决方案应该可以解决你的问题)
关于java - 从 .so 在 tomcat 中调用 Java 中的 native 库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7728442/