一台机器可以装多个jdk吗

解决方案 »

  1.   

    可以,记得编译运行时选好版本:[code=BatchFile]javac -target 1.6 HelloWorld.java
    java -version:1.6 HelloWorld[/code]
      

  2.   

    一台机器可以装多个jdk。但是path环境变量里面只能对应其中的一个。如果要使用其它的jdk,需要改变path变量或者用绝对路径指定javac和java命令。
    4楼说的不太对。-target参数是指定编译出的中间码是什么版本格式。与多个jdk无关。比如jdk1.6可以编译出1.4或者1.5版本的中间码来。
      

  3.   

    啊,这样啊,太麻烦了,我看还是算了,到家里的机器装1.6吧
    还有个问题,就是以前装别的软件的时候不是有时要指定JDK的吗,那我把以前装的jdk卸载了,装1.6,那之前装的那些软件会有问题吗
      

  4.   

    应该会有问题,因为你在为那些软件指定jdk的时候,已经把一起jdk的路径告诉它了,现在你把以前的jdk删掉了。那些软件找不到那个目录就会出问题。不过这个时候软件一般都会从新询问你jdk的安装路径。你从新指定一个就行了。
      

  5.   


    胡扯,你拿 1.6 编译出来的(特别是用到了新增 API 或范型的应用)到 1.4 下跑跑试试。
      

  6.   

    你自己打javac -help看看不就知道了吗。看看说明,然后跟大家解释一下。
      

  7.   


    在安装 JRE 或 JDK 时,安装程序会将 java.exe,javacpl.cpl(提供控制面板中那个图标对应的 Java 运行环境设置功能),javaw.exe,javaws.exe 这四个文件复制到 X:\WINDOWS\system32 文件夹下,如果按照从老版本到新版本的顺序安装,就可以保证是新版本的 java.exe 覆盖老版本的此文件,而最新版的 java.exe 提供了以此前老版本相兼容的模式启动 JVM 的功能,这才是 java -version:1.6 HelloWorld 的真正含义,而在 path 环境变量里有 %SystemRoot%\system32 这项,所以即使不把 java.exe 的路径追加(加到已有的末尾)到 path 环境变量里也能正常启动 Java 程序。如果加了,也是在前面 %SystemRoot%\system32 里的 java.exe 首先被找到拿它来启动 JVM 的。-target 确实如 7 楼所说,是以相应的版本生成与之相兼容的字节码,但别忘了,JRE 类库并不是向前兼容的,1.6 里新增的类和方法老版本 JRE 类库中是没有的,除非不使用任何新增特性,否则在老版本 JRE 里运行没戏。另外网上经常说 1.5 新增的范型用法并没有改变 JVM 的实现,而只是用了些“语法糖”,但实际上 JVM 层面的更改是有的(非常小),如果不使用高级范型用法没问题,但一旦用到了也基本会把老版本 JVM 搞傻,使用的时候得加倍小心。
      

  8.   

    引用 7 楼 qj123456_0 的回复:
    一台机器可以装多个jdk。但是path环境变量里面只能对应其中的一个。如果要使用其它的jdk,需要改变path变量或者用绝对路径指定javac和java命令。 
    4楼说的不太对。-target参数是指定编译出的中间码是什么版本格式。与多个jdk无关。比如jdk1.6可以编译出1.4或者1.5版本的中间码来。 虽然我没试过,但是应该可以的.增加了泛型应用但是以前的语法在1.5中是没错.1.6没试过不知道.觉得应该也是可以的.
      

  9.   

    这么麻烦的话,那如果我要使用更高版本的JDK,而且不影响以前的软件,有什么好的办法可以折衷的啊
      

  10.   

    说那么多还不如试一试。我写了个带泛型的例子,在jdk1.6的环境下。想用javac -target 1.4 Test.java的方法去编译,结果根本编译不了,提试:target release 1.4 conflicts with default source release 1.5。也就是说必须指定-source 1.4才可以,但是指定了-source 1.4之后显然不对。因为带泛型的源码是不符合1.4的语法规范的。所以会出现编译错误。但是如果我写一个很简单的System.out.println("hello");这样的程序,就可以用javac -target 1.4 -source 1.4 Test.java的方法来编译,编译后的class文件就可以在1.4的jre下面运行了。
      

  11.   

    俺是搞开发的,我机器上有个1.6和1.4的JDK,可是我的开发的软件需要1.4的
    如果在1.6下编译回说错误。好在Eclipse有选择的JDK的地方,只要选对啦就好用,完全没有问题。
    而且,大家可能在装orcle的时候装的是1.3的jdk,但是如果把环境变量配好,就没有问题
      

  12.   

    这跟你机器里面安装的软件如何寻找JDK(JRE)有关系,比如说,Oracle就自己带着jre,所以不管你环境的jre如何变化,都不会影响到Oracle的使用。但是Path里设置的JDK路径只能有一个就对了。
      

  13.   

    oracle是不会影响,那其他的软件呢,难道我卸载掉现在的jdk,装高版本的jdk,但是安装目录的名字还是和老的一样,这样的话path就不会变了,这样也不会影响以前的软件使用吧
      

  14.   

    这个不敢保证,因为在低版本jre下能够运行的软件不能保证在高版本jre下就一定可以正常运行,不过这个问题你不用担心。这是那些软件的提供商需要注意的问题,一般对jre版本有特殊要求的软件都会自带jre的。我们公司的软件就是这样的。
      

  15.   

    JDK装多少没有关系的。运行时候指定下就可以了