Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从applet调用dll方法_Java_Applet - Fatal编程技术网

Java 从applet调用dll方法

Java 从applet调用dll方法,java,applet,Java,Applet,我需要使用JavaApplet在dll中调用一个方法。 DLL是用C++编写的。 是否可能,如果可能,需要什么 任何人都可以提供您应该使用的示例api。 看看这篇文章 确保环境变量CLASSPATH包含 参考“[WINDIR]\Java\Classes\Classes.zip”和“C:”(假设 这是你的发展动力) 确保您的“[SDK Java]\Bin”目录包含在 路径(用于JavaH、JVC和JView) 确保VisualC++被正确设置用于命令行使用。 有关详细信息,请参阅VisualC++

我需要使用JavaApplet在dll中调用一个方法。 DLL是用C++编写的。 是否可能,如果可能,需要什么

任何人都可以提供您应该使用的示例api。 看看这篇文章

  • 确保环境变量CLASSPATH包含 参考“[WINDIR]\Java\Classes\Classes.zip”和“C:”(假设 这是你的发展动力)
  • 确保您的“[SDK Java]\Bin”目录包含在 路径(用于JavaH、JVC和JView)
  • 确保VisualC++被正确设置用于命令行使用。 有关详细信息,请参阅VisualC++文档。
  • 编写Java代码:

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

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

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

    #include "TestJNI.h"
    #include <stdio.h>
    
    JNIEXPORT void JNICALL Java_TestJNI_greetings(JNIEnv *env,jobject jobj) {
       printf("Hello from Visual C++!");
    }
    
  • 测试应用程序:

    jview TestJNI
    

  • 请参阅rkosegi re的链接线程受信任的代码”-理解起来很重要。aviad已经介绍了一种方法的许多细节。这篇文章将只关注部署本地人

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

    从“下一代”插件(例如Sun的1.6.0_10+)开始,JWS可以部署嵌入式小程序(以前只能自由浮动)

    但是,为什么您想要一个applet呢


    更好的选择通常是直接从链接启动自由浮动帧(使用JWS)。同样的安全限制也适用,但它更易于部署和更好的用户体验。

    可能与startup重复或检查:Hi@Andrew我只是想说,对于阅读此问题的人来说,JWS并不是灵丹妙药。它有一个令人讨厌的错误,缓存将被破坏,然后它将不再加载你的应用程序,直到手动清除缓存。这个bug在Sun被收购之前就已经存在了,如果我记得清楚的话,买甲骨文吧,他们就是不在乎。我们有一位支持人员花了他一天的大部分时间在电话上向会计师解释如何清除他们的Java缓存(很多人就是不明白)。不好的!“JWS不是灵丹妙药。”因为这是显而易见的,我不知道你为什么要费心提及它。“它有一个讨厌的bug”所有非平凡的应用程序。有漏洞。“所有非平凡的应用程序都有漏洞”是的。问题只是在这种情况下,他们没有解决它。我认为,您运行/部署产品所依赖的框架/工具中的任何缺陷都值得向潜在用户提及,这些缺陷非常糟糕,可能会让您损失许多客户,并且您无法自行修复或解决。我不是在批评你,而是在批评WebStart;我很抱歉,你似乎把这件事当回事。
    jview TestJNI