java—我试图从另一个文件运行jni代码首先显示调用jni的第一个文件,然后显示jni代码

6fe3ivhb  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(234)

我试图从另一个文件运行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,但不知道是什么导致了错误。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题