当将Java嵌入C++应用程序时,我需要使用哪些文件?

3
我们的C++应用程序托管了Sun的JVM,我需要在Windows上将其升级到最新版本。我下载了JDK 6u20,但我不知道应该将哪些文件夹放入我们的安装包中。我们目前有一些Java 5的版本,但似乎第一次做这件事的人挑选了文件。
我想知道从JDK安装中应该选择哪些文件夹。由于我们正在使用JNI,因此我还需要所有包含文件/库。
此外,Java开发人员表示我应该从JDK安装中获取文件而不是JRE,是否有任何区别?也许在JDK的JRE中提供的jar包中有所不同?
1个回答

3

不知道您的应用程序是什么,所以我建议使用整个JRE,无法确定哪些文件可以省略。

但是,您可以通过比较安装程序的JRE文件和原始JRE文件,找出安装程序的原始创建者没有选择的文件。然后,您可以编写这些文件,并猜测为什么您的应用程序不需要它们。

如果不确定,请保留它们。

编辑: JRE再分发许可证要求软件完整:

(a) you distribute the Software complete and unmodified and only
    bundled as part of Your applets and applications ("Programs"),

请查看http://java.sun.com/javase/6/webnotes/install/jre/README

然而,同一文档还提到文件分为必需和可选文件,并列出了哪些文件是可选的。因此,您可以省略可选文件。


2
请注意,如果您只提供了JRE的部分而不是全部,则可能违反了Java再分发许可证。 - Craig Trader
我尝试比较文件夹,但在我们当前的jvm bin文件夹中只有6个DLL。在安装的bin文件夹中有43个:/ 也许我只需要复制除了exe文件之外的所有内容,因为我确定我们不需要那些文件。 - Idan K
如果您想要一个“私有”的JRE,但同时又要遵守再分发许可证,您可以尝试使用Ahead of Time编译器,例如Excelsior JET。这将把您的Java代码编译成本地DLL,并仅捆绑真正需要的JRE DLL。 - mdma
@Idan K - jre/README.txt 文件列出了再分发要求,包括哪些文件/目录是可选的。 - McDowell
@McDowell - 我们想得一样 - 我刚刚在我的答案中加了这个,然后看到你的评论。 - mdma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接