从applet调用dll方法

时间:2012-03-07 08:14:15

标签: java applet

我需要使用Java Applet在dll中调用一个方法。 dll是用C ++编写的。

是否有可能,如果可能的话,需要什么。

任何人都可以提供样本api

2 个答案:

答案 0 :(得分:3)

您应该使用JNI。 请查看this文章。

  1. 确保环境变量CLASSPATH包含 引用“[WINDIR] \ Java \ Classes \ Classes.zip”和“C:”(假设 C:是你的发展动力。)
  2. 确保您的“[SDK-Java] \ Bin”目录包含在您的目录中 path(适用于JavaH,JVC和JView)。
  3. 确保正确设置Visual C ++以供命令行使用。 有关详细信息,请参阅Visual C ++文档。
  4. 编写Java代码:

    public class TestJNI {
       public native void greetings();
    
       static {
          System.loadLibrary("greet");
       }
    
       public static void main(String args[]) {
          new TestJNI().greetings();
       }
    }
    
  5. 编译Java文件:

    jvc TestJNI.java
    
  6. 在生成的类文件上运行JavaH:

    javah -jni TestJNI
    
  7. 根据生成的头文件编写C / C ++代码:

    #include "TestJNI.h"
    #include <stdio.h>
    
    JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) {
       printf("Hello from Visual C++!");
    }
    
  8. 编译C / C ++代码:

    cl greet.cpp -Ic:\sdk-java.31\include -Fegreet.dll -MD -LD
    
  9. 测试应用程序:

    jview TestJNI
    

答案 1 :(得分:0)

通过rkosegi re查看链接的主题。 &#39;可信代码&#39; - 理解很重要。 aviad已经涵盖了一种方法的许多细节。这篇文章将只关注部署本地人。

使用本机的applet的真正问题是将本机安装在applet可以访问它们的位置。这就是使用Java Web Start部署applet变得有用的地方。 JWS不仅可以根据操作系统和操作系统对本机的下载进行分区。体系结构(32/64位),但然后在应用程序的运行时类路径上使本机可用,准备加载。

截至下一代&#39;插件(例如Sun的1.6.0_10 +),JWS可以部署嵌入式applet(之前它只能自由启动它们)。

但是,为什么你想要一个小程序呢?

更好的替代方案通常是直接从链接(使用JWS)启动自由浮动帧。适用相同的安全限制,但更易于部署和更好的用户体验。