用我的应用程序打包jre

时间:2011-09-22 09:08:14

标签: c++ windows java-native-interface java

我的应用程序包含一个c ++ exe文件,它使用JNI调用java程序,因此需要jvm.dll。但是,我希望我的应用程序附带自己的嵌入式jre,但是在我复制JAVA_HOME中找到的jre6文件夹并将其添加到我的安装程序之后,它无法运行程序(VM初始化期间发生错误无法加载本机库:可以找不到依赖库,当我在jvm.dll上使用依赖walker时,它说找不到gpsvc.dll,IEShims.dll和sysntfy.dll。在我尝试将这些dll复制到与jvm.dll相同的文件夹之后,依赖性walker告诉我gpsvc.dll和sysntfy.dll是64位,它应该是x86。问题是,那些是我系统中唯一的dll,我该怎么办?

2 个答案:

答案 0 :(得分:2)

Java虚拟机不仅仅包含jvm.dll。您需要重新分发整个JVM包并将其安装在用户的计算机上,而不是仅将jvm.dll添加到您自己的应用程序中。

在安装应用程序之前,要求用户自己下载和安装JVM可能要容易得多。如果您真的想要将JVM与您的应用程序一起重新分发,那么您需要在Oracle网站上找到有关该软件的确切许可以及如何执行该文档的文档。例如,查看JDK 6自述文件的this paragraph

这并不像复制jvm.dll和其依赖的其他库那样简单。

答案 1 :(得分:1)

您可以从相应的网站下载所需的dll,即来自this one