我试图从另一个文件运行jni代码。首先显示调用jni的第一个文件,然后显示jni代码。
伪造网址
package jniTest;
import java.lang.reflect.InvocationTargetException;
public class FakeUrl {
public static void main(String[] args) {
try {
Class.forName("HelloJNI").getMethod("run").invoke(null,args[0]);
} catch (IllegalAccessException | NullPointerException | IllegalArgumentException | ExceptionInInitializerError| InvocationTargetException
| NoSuchMethodException | SecurityException | ClassNotFoundException e) {
System.out.println("here2");
e.printStackTrace();
}
}
}
这是jni代码。
package jniTest;
public class HelloJNI {
static {
System.load("/home/ioss/Desktop/JNIEg/libhello.so");
}
private native void sayHello();
public void run() {
try{
HelloJNI jni=new HelloJNI();
jni.sayHello();
}
catch(Exception e) {
System.out.println("here");
e.printStackTrace();
}
new HelloJNI().sayHello();
}
}
这就是控制台中显示的内容。
此处2
java.lang.ExceptionInInitializeError错误
位于java.lang.class.forname0(本机方法)
在java.lang.class.forname(class。java:264)
在jnitest.fakeurl.main(fakeurl。java:14)
原因:java.lang.nullpointerexception
在hellojni。java:4)
... 3个以上
输出在hellojni的第4行显示exceptionininitiativeerror,但不知道是什么导致了错误。
暂无答案!
目前还没有任何答案,快来回答吧!