我有一个需要在1.7上运行的项目1,该项目依赖于另一个基于1.8的项目2。
我正在尝试从Project 1中的Project 2调用一个类,但是我遇到了一个已知错误,该错误已在1.8中修复。如果我在JRE 1.8的Project 2上单独运行该类,则效果很好。
是否有人会为方法调用动态选择目标JRE?
答案 0 :(得分:2)
如果您愿意制作一个jar并为每个程序使用包装,则可以将特定的jre与每个可执行文件捆绑在一起。
下载并运行Launch4j
在您的Eclipse项目中,单击:
File -> export -> runnable jar file -> next
然后为您要提取的项目选择运行配置。击中Finish
最好测试每个jar并确保其运行。双击,或使用cmd找到它并执行java -jar nameOfJarToTest.jar
。
为您的jre创建一个子文件夹。我只是称我为“ jre”。
将bin
和lib
文件夹从正确的jre复制并粘贴到您刚创建的文件夹中。如果您想运行Java 8,则我的位置位于C:\Program Files\Java\jre1.8.0_201
之类的地方。要特别清楚,您的文件结构应为
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)
单击jre选项卡,然后在min jre
字段中添加您各自的jre。确保选择选项Only use private jdk runtimes
。在下图所示的“捆绑的jre路径”字段中键入“ jre”(如果您使用“ bin”和“ lib” jre命名该文件夹)。
如果对两个jar文件都执行此操作,并确保“ bin”和“ lib”文件夹来自要运行的jre,则这两个程序在不同的运行时环境中都可以正常运行。如果您希望一个程序能够调用另一个程序,我发现geeksforgeeks网站上有a very simple and concise way for you to call external executable files from your code,如果您可以使用规范路径。
答案 1 :(得分:0)
这是不可能的,如果您的项目依赖1.7,则其依赖项也应为1.7。在运行时,所有代码都在同一JVM中执行,因此无法动态“选择”目标JRE。
如果您确实没有其他选择,并且两个库应该一起工作,则可以在项目1和项目2之间建立某种桥梁,其中项目1在单独的JVM实例中调用项目2。