class HelloWorld {
public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明
static { System.loadLibrary("hello"); //载入本地库
}
我想明白static{}是静态匿名内部类吗?
我现在在做一个WEB项目。需要在项目启动时启动一个监听类,而且这个监听类是每隔1分钟就自动运行一次的。这个监听类中会调用JNI的内部方法,这样就会出现一个问题。我每一次调用都会动态加载DLL文件。但是DLL文件是独占的。有没有什么方法能将STATIC{system.loadlibrary();}只加载一次!
多谢各位高手了!速度急呀
public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明
static { System.loadLibrary("hello"); //载入本地库
}
我想明白static{}是静态匿名内部类吗?
我现在在做一个WEB项目。需要在项目启动时启动一个监听类,而且这个监听类是每隔1分钟就自动运行一次的。这个监听类中会调用JNI的内部方法,这样就会出现一个问题。我每一次调用都会动态加载DLL文件。但是DLL文件是独占的。有没有什么方法能将STATIC{system.loadlibrary();}只加载一次!
多谢各位高手了!速度急呀
这叫静态初始化语句块。
这样做就只在HelloWorld类加载的时候loadLibrary一次。楼主遇到的问题不是这里的问题。
static { //这样表示静态代码块,在类加载的时候,静态代码块的代码被执行
System.out.println("静态代码块,在类加载的时候执行");
} { //如果前面没有static,表示实例化初始化块,在构造方法调用前执行
System.out.println("初始化块,在构造方法调用前被执行");
}
}
Class outer{
// 声明静态内部类
static class inner{
}
}
这个本身就是加载一次