我的应用程序包含一个使用 JNI 调用 java 程序的 c++ exe 文件,因此需要 jvm.dll。但是,我希望我的应用程序附带它自己的嵌入式 jre,但是在我复制在 JAVA_HOME 中找到的 jre6 文件夹并将其添加到我的安装程序后,它无法运行该程序(VM 初始化期间发生错误无法加载 native 库:可以't find dependent libraries),当我在jvm.dll上使用dependency walker时,它说找不到gpsvc.dll、IEShims.dll和sysntfy.dll。在我尝试将这些 dll 复制到与 jvm.dll 相同的文件夹后,dependency walker 告诉我 gpsvc.dll 和 sysntfy.dll 是 64 位的,而它应该是 x86。问题是,我的系统上只有这些 dll,我该怎么办?
最佳答案
Java 虚拟机不仅仅包含 jvm.dll
。您需要重新分发整个 JVM 包并将其安装在用户的机器上,而不是仅仅将 jvm.dll
添加到您自己的应用程序中。
要求您的用户在安装您的应用程序之前自行下载并安装 JVM 可能会容易得多。如果您真的想在您的应用程序中重新分发 JVM,您需要在 Oracle 的网站上找到文档,了解确切的许可证是什么以及如何做。看this paragraph例如 JDK 6 自述文件。
不是复制jvm.dll
和它依赖的其他库那么简单
关于c++ - 用我的应用程序打包一个 jre,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7512285/