是否可以使用不同版本的java运行jar文件?

时间:2015-04-16 10:16:01

标签: java hadoop mapreduce openjdk powerpc

因此,我们在Power PC机器(64位)上运行hadoop。它使用IBM JDK运行。但是,在hadoop map reduce程序中,会生成执行jar程序的不同进程(使用ProcessBuilder类)。问题是这些程序在使用IBM JDK的虚拟机时遇到问题,因此需要Open JDK。同样,hadoop在Power PC上运行OpenJDK时出现问题。所以我想知道,如果可以使用不同版本的java执行jar文件。因此,例如,在这种情况下,hadoop使用IBM JDK,并且在map reduce程序中执行的jar文件使用Open JDK。基本上,我们需要为同时运行的程序使用不同的java虚拟机。

2 个答案:

答案 0 :(得分:1)

您在评论中提供了最重要的信息 - 通过ProcessBuilder类产生的信息。这个类在OS级别进行调用,因此您可以使用它启动任何进程,并且它们与启动它们的Java进程完全分开。所以一般的答案是“是的,这是可能的”。只需确保ProcessBuilder调用另一个Java安装。

答案 1 :(得分:0)

您的Java版本只是相关安装目录的链接。因此,当您安装各种(下载位于此处:http://www.ibm.com/developerworks/java/jdk/linux/download.html)时,您只需将链接(ln -s)更改为该子目录即可。例如,我们在系统上保留了4个版本的java:

/usr/java/java_7_64bt
/usr/java/java_7_32bt
/usr/java/java_6_64bt
/usr/java/java_6_32bt
# ls -l /usr/java
lrwxrwxrwx. 1 root root 22 Aug  5 15:00 /usr/bin/java ->  /usr/java/java_7_64bit/java

其他程序可以调用/usr/bin/java或hadoop调用其他东西时需要的版本的直接路径。