如何在与当前项目的 JRE 不同的 JRE 上执行库 jar 中的方法

我有一个需要在 1.7 上运行的项目 1,该项目依赖于另一个基于 1.8 构建的项目 2。

我正在尝试从 Project 1 中的 Project 2 调用一个类,但我收到了一个已知错误,该错误已在 1.8 中修复。如果我在 JRE 1.8 的项目 2 上单独运行这个类,它工作正常。

任何导致为方法调用动态选择目标 JRE 的原因?


ITMISS
浏览 52回答 2
2回答

湖上湖

如果您愿意制作一个 jar 并为每个程序使用一个包装器,您可以将一个特定的 jre 与每个可执行文件捆绑在一起。下载并运行Launch4j在您的 Eclipse 项目中,单击:File -> export -> runnable jar file -> next并为您要提取的项目选择运行配置。打Finish测试每个 jar 并确保它运行是个好主意。双击,或使用 cmd 找到它并执行java -jar nameOfJarToTest.jar.为您的 jre 创建一个子文件夹。我只是称我的“jre”。bin将您的和lib文件夹从正确的 jre复制并粘贴到您刚刚创建的文件夹中。我的位置就像C:\Program Files\Java\jre1.8.0_201你想运行 java 8。为了更加清楚,你的文件结构应该是someContainerFolder(你刚刚创建的文件夹)  nameOfJarToTest.jar   jre(folder you just made)         bin(folder copied from the jre in your file system)         lib(folder copied from the jre in your file system)运行 Launch4j。添加 .jar 并选择输出文件路径。下图的字段单击 jre 选项卡并在min jre字段中添加您各自的 jre。确保您选择了该选项Only use private jdk runtimes。在下图所示的“捆绑的 jre 路径”字段中键入“jre”(如果您使用 'bin' 和 'lib' jre 命名文件夹)。单击“构建包装器”。它看起来像一个设置齿轮。如果您对两个 jar 文件都这样做,并确保“bin”和“lib”文件夹来自您要运行的 jre,那么这两个程序都将在不同的运行时环境中正常运行。如果您希望一个程序能够调用另一个程序,我发现 geeksforgeeks 网站有一种非常简单明了的方法,如果您对规范路径没问题,您可以从代码中调用外部可执行文件。

料青山看我应如是

这是不可能的,如果您的项目依赖于 1.7,那么它的依赖项也应该是 1.7。在运行时,所有代码都在同一个 JVM 中执行,无法动态“选择”目标 JRE。如果您真的没有其他选择并且两个库应该一起工作,您可能会在项目 1 和 2 之间建立某种桥梁,其中项目 1 在单独的 JVM 实例中调用项目 2。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java