System.loadDll(你dll的路径及文件);
在类中写方法,方法名及参数跟DLL文件中的方法名及参数都一样,注意:方法名前加native.
这样你调用这个类的方法,就会自动去调用DLL中的方法。

解决方案 »

  1.   

    可是……
    我的jdk没有System.loadDll()这个方法,
    只有System.load()和System.loadLibrary()不知……是否相同?
      

  2.   

    对,是我写错了,应该是System.loadLibrary()
      

  3.   

    Gets a example! thank you very much!
      

  4.   

    public class JRockey
    {    public JRockey() {    }    public native short Rockey(short word0, short aword0);
        static 
        {
            System.loadLibrary("JRockey");
        }
      

  5.   

    使用jni技术实现,看看jni的相关文档,很容易的
      

  6.   

    比如:JRockey有一个方法SayHello(byval context as String)
    我如何调用它呢?VB编写的DLL在创建时,一般如下:
    set obj = CreateObject("XXXProject.XXXModule")那么,在java的loadLibrary方法中是否应该写
    System.loadLibrary("XXXProject.XXXModule")不会怪我太麻烦吧!我试成功,马上接贴,分数全归您!谢谢!
      

  7.   

    我的测试如下:
    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"可以成功!
      

  8.   

    java.library.path怎么设?
    是classpath吗?
      

  9.   

    System.loadLibrary("JRockey");
    其中JRockey是指windows/system或winnt/system32下的JRockey.dll
    也就是说你的dll文件应该放在windows/system或winnt/system32下!
      

  10.   

    而JRockey是指的DLL的名称(文件名)?
    如何调JRockey.dll中的某个方法呢?
    比如有一个方法叫sayHello(byval str as string)
      

  11.   

    采用JNI是可以调用到的。
    但是很麻烦!!!
    整个调用的方式如这样的
    java app -> your dll -> activeX dll
    如果你真的想要这样做,我可以给你一个例子。
      

  12.   

    JRockey.dll里还有相应的对象呢,要调这些对象的方法才行呀,不知该怎么做呀!
    关注!
      

  13.   

    在上述的your dll创建com对象,将从java传过来的调用参数再传入对象的方法。
      

  14.   

    我会: )
    给一个简单例子:
    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,但还是会提示找不到方法的!
    以上只是一点心得,希望对你有帮助,谢谢
      

  15.   

    给你两个连接去看看
    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
      

  16.   

    先做一个VC的DLL,用VC调VB????????????java->VC->VB ?????????