|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
令人可喜的是java现在已经开源了,所以我想我上述的想法也许有一天会实现,因为java一直都是不断创新的语言,每次创新都会给我们惊喜,这也是我喜欢java的一个原因。
JNI(JavaNative
Interface)使用程序通常为一个Java类,在这个类中界说了几个native办法,并在类的初始化过程当中加载静态库,比方上面这个类
publicclassSystemInfo{
static{
System.loadLibrary("SystemInfo");
}
publicstaticnativelonggetPhysicalMemory();
}
当Web项目用到该类并因为其他类的修正招致项目(context)从头加载,这个时分SystemInfo的初始化就会出非常,间接招致SystemInfo这个不成用,由于JNI中不同意一个静态库被加载两次,并且也没法经由过程程序来卸载后面所加载的静态库。
怎样来办理由于context从头加载而招致JNI类没法试用的成绩呢?
实在这个成绩不难,我们只需不让JNI类从头加载便可。可是一样平常的使用服务器对Web项目中文件都是默许从头加载的,比方WEB-INF/classes和WEB-INF/lib目次。云云我们便不克不及将JNI类放在这两个目次下,可是我们又必需包管这个JNI类能被Web项目标其他类援用到,因而这就必要参照分歧使用服务器的类路径的申明举行设置,关于Tomcat而言,我们能够把这个JNI类独自打包并放在{tomcat}commonlib目次下,并删除web项目中的这个JNI类便可办理后面提到的成绩。
java也能做一些底层语言开发做的事情(难度很高,不是java顶尖高手是做不来的), |
|