我写了JNI类(Registry类)调用VC写的DLL,是读写注册表的,我先在第一个JSP页面里用代码如下:
Registry register = null;
register = new Registry():
.
.
.
register.setValue("FirstName","song");.
.
.然后在第二个而面里读出上面的值。
Registry register = null;
register = new Registry():。
。
。
String firstName = null;
firstName = register.getValue("FirstName");.
.
.
这时就出现java.lang.UnstatifiedLinkError:Native:c:\WINNT\System 32\Registry.dll already loaded in another class loader.
我将第一步的register保存在Session里面也无济于是,
请各位大虾帮助了。
Registry register = null;
register = new Registry():
.
.
.
register.setValue("FirstName","song");.
.
.然后在第二个而面里读出上面的值。
Registry register = null;
register = new Registry():。
。
。
String firstName = null;
firstName = register.getValue("FirstName");.
.
.
这时就出现java.lang.UnstatifiedLinkError:Native:c:\WINNT\System 32\Registry.dll already loaded in another class loader.
我将第一步的register保存在Session里面也无济于是,
请各位大虾帮助了。
这个可能不行吧你最好避免这种情况
已经被另外一个加载了.
{
{
try
{
System.loadLibrary("MseReg");
}
catch(SecurityException e)
{
e.printStackTrace();
}
catch(UnsatisfiedLinkError e)
{
e.printStackTrace();
}
}
。
。
。
}
是加载了两次,想unload DLL,也不知道如何做?
请大虾指点啊。
要使用这个dll里面的办法就直接调用那个类就ok了啊
public class Registry
{
{
static{
try
{
System.loadLibrary("MseReg");
}
catch(SecurityException e)
{
e.printStackTrace();
}
catch(UnsatisfiedLinkError e)
{
e.printStackTrace();
}
}
}
。
。
。
}
将加载dll文件的代码放在static块中!
使用一个类来加载,并且放在static块里面
那么你要使用这个dll就调用这个类对象就行了
再用一类来重写本地方法!再用其它类来调用前者的方法。OK!
能否说详细些,能否讲一下如设计这两个及在什么情况下有那个Load Dll的类。谢谢。
现在你要用java来访问这种方法!首先在java类里用static方法加载.dll文件。然后写一些本地方法,这些方法就是用C写方法,没有方法体。再写一个类具体操作的类,这些类与刚才写的类的方法相同,只是返回刚才写的那个类的方法。
如:
public class A{
public native String getContractor( String s_privateid ) throws PR_APIException ;
static {
System.loadLibrary( "XXX_Jni" ) ;
}
}
public class B {
public native String getContractor( String s_privateid )
throws PR_APIException {
return A.getContractor( String s_privateid );
}
}
public class B {
public String getContractor( String s_privateid )
throws PR_APIException {
return A.getContractor( String s_privateid );
}
}
public class B {
A a = new A():
public String getContractor( String s_privateid )
throws PR_APIException {
return a.getContractor( String s_privateid );
}
}
分另在一JSP页面和Servlet里调用(用如下代码)
B b = new B()
b.getContractor(string);
但还是出现同样的问题。
请继续帮助,不胜感激。
public class B {
private A a ;
public String getContractor( String s_privateid )
throws PR_APIException {
return a.getContractor( String s_privateid );
}
}