System.loadDll(你dll的路径及文件);
在类中写方法,方法名及参数跟DLL文件中的方法名及参数都一样,注意:方法名前加native.
这样你调用这个类的方法,就会自动去调用DLL中的方法。
在类中写方法,方法名及参数跟DLL文件中的方法名及参数都一样,注意:方法名前加native.
这样你调用这个类的方法,就会自动去调用DLL中的方法。
解决方案 »
- JAVA静态方法的解析问题
- 请教java里面有没有类似vc++那样的控件管理器
- 请问如何拷贝一个目录下的所有目录及文件
- 如何用java对需要用户登录后才可访问的网站进行信息提取?
- 如何求两条直线的交点坐标,大虾请进!!!
- 高分求解简单题c++到java移植几句代码
- 请教DS问题:如何用Java实现迷宫问题?
- 在两个图形之间连线时,AB两个图标之间有C,所以应该画折线,如何实现呢?
- 请问如何整合JB7和WAS??
- 请问:如何调用exe文件
- 驱动程序找不到Class.forName("oracle.jdbc.driver.OracleDriver");,在程序中还要设置什么?
- 如何用java取到相当当前日期以前的某个日期(百万火急)???
我的jdk没有System.loadDll()这个方法,
只有System.load()和System.loadLibrary()不知……是否相同?
{ public JRockey() { } public native short Rockey(short word0, short aword0);
static
{
System.loadLibrary("JRockey");
}
我如何调用它呢?VB编写的DLL在创建时,一般如下:
set obj = CreateObject("XXXProject.XXXModule")那么,在java的loadLibrary方法中是否应该写
System.loadLibrary("XXXProject.XXXModule")不会怪我太麻烦吧!我试成功,马上接贴,分数全归您!谢谢!
public class Test {
public static void main(String args[]) {
System.out.println("Hello world");
callVBDLL((short)0,(short)0);
return ;
}
public native static short callVBDLL(short word0, short aword0);
static {
System.loadLibrary("Test.TestClass");
}
}
出现异常
Exception in thread "main" java.lang.UnsatisfiedLinkError: no Test.TestClass in
java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1410)
at java.lang.Runtime.loadLibrary0(Runtime.java:772)
at java.lang.System.loadLibrary(System.java:832)
at Test.<clinit>(Test.java:14)
//用VB调"Test.TestClass"可以成功!
是classpath吗?
其中JRockey是指windows/system或winnt/system32下的JRockey.dll
也就是说你的dll文件应该放在windows/system或winnt/system32下!
如何调JRockey.dll中的某个方法呢?
比如有一个方法叫sayHello(byval str as string)
但是很麻烦!!!
整个调用的方式如这样的
java app -> your dll -> activeX dll
如果你真的想要这样做,我可以给你一个例子。
关注!
给一个简单例子:
package mytest;public class HelloNative
{ //要调用的本地方法声明为native
public native static void greeting();
static
{
System.loadLibrary("newPrintfDll");
}
}
主类如下:
package mytest;import mytest.*;public class HelloNativeTest
{
public static void main(String[] args)
{
HelloNative.greeting();
}
}
首先,你要编译有native方法的那个文件,生成class文件,然后,使用jdk自带的命令javah编译该类文件,生成.h文件,生成的.h文件的关键代码如下:
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl);//稍微改了改
用vc或者c++builder做一个dll文件,跟着winzard做,不难,将这段代码拷贝到cpp文件里(用vc做时),然后再在下面写出你要的代码如
JNIEXPORT void JNICALL Java_mytest_HelloNative_greeting
(JNIEnv env*, jclass cl)
{
printf("Hello NativeWorld!");
}
编译生成dll,放到c:\winnt\system下就可以了.
注意:
在用vc编译dll时,要先找到jni.h和jni_md.h放到include里
在编译.h文件是注意包的路径问题(如果有的话),否则虽然可以找到dll,但还是会提示找不到方法的!
以上只是一点心得,希望对你有帮助,谢谢
http://www-900.ibm.com/developerWorks/cn/java/jnimthds/index.shtmlhttp://www-900.ibm.com/developerWorks/cn/java/jw-tips/tip023/index.shtml还有
http://www-900.ibm.com/developerWorks/cn/java/javabeans-mig/index.shtml