我的应用程序包含一个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,我该怎么办?
答案 0 :(得分:2)
Java虚拟机不仅仅包含jvm.dll
。您需要重新分发整个JVM包并将其安装在用户的计算机上,而不是仅将jvm.dll
添加到您自己的应用程序中。
在安装应用程序之前,要求用户自己下载和安装JVM可能要容易得多。如果您真的想要将JVM与您的应用程序一起重新分发,那么您需要在Oracle网站上找到有关该软件的确切许可以及如何执行该文档的文档。例如,查看JDK 6自述文件的this paragraph。
这并不像复制jvm.dll
和其依赖的其他库那样简单。
答案 1 :(得分:1)
您可以从相应的网站下载所需的dll,即来自this one。