How to Revert to Java 1.6 on Mac OS X 10.7.5

前端 未结 3 772
无人共我
无人共我 2020-12-22 21:07

I have the 1.6 installer. I\'ve used it. It does not change my Java installation, nor say there is an older version, but it does complete the installation.

I\'ve bee

相关标签:
3条回答
  • 2020-12-22 21:50

    The java, javac, etc. command line tools are sensitive to the value of the JAVA_HOME environment variable and will use 1.6 if this variable points to a 1.6 JDK. The tool /usr/libexec/java_home is your friend here. Running

    /usr/libexec/java_home
    

    will print out the appropriate JAVA_HOME value for the most up to date JDK on your system. This will be Java 7, but you can apply constraints using the -v flag, for example

    /usr/libexec/java_home -v '1.6*'
    

    will return a JAVA_HOME value for the best available 1.6 JDK on your system. You can use this value to set JAVA_HOME:

    export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
    

    either as a one-off for a particular Terminal session, or permanently for all future terminal sessions by adding the above line to the .bash_profile file in your home directory.


    $ export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
    $ java -version
    java version "1.6.0_37"
    Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
    Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
    $ export JAVA_HOME=`/usr/libexec/java_home -v '1.7*'`
    
    $ java -version
    java version "1.7.0_09"
    Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
    
    0 讨论(0)
  • 2020-12-22 21:53

    I ran into a similar problem. After having installed JDK7, some of my applications no longer worked. I needed to revert back to JDK6, and I did it differently. I noticed that in my /System/Library/Frameworks/JavaVM.framework/Versions/, it showed the following:

    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4 -> CurrentJDK
    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4.2 -> CurrentJDK
    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5 -> CurrentJDK
    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5.0 -> CurrentJDK
    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6 -> CurrentJDK
    lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6.0 -> CurrentJDK
    drwxr-xr-x  8 root  wheel  272 Oct 25 18:06 A
    lrwxr-xr-x  1 root  wheel    1 Oct 25 17:01 Current -> A
    lrwxr-xr-x  1 root  wheel   59 Nov 20 21:40 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/
    

    so I removed the symbolic link CurrentJDK

     sudo rm CurrentJDK
    

    and re-created the symbolic link pointing to JDK6, which is still on my Mac

    sudo ln -s  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ CurrentJDK
    

    and that did the trick for me

    java -version
       java version "1.6.0_65"
       Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
       Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    0 讨论(0)
  • 2020-12-22 21:59

    If you need to write code that you want to run on a previous version of Java then you can change the compile flags. This might be all you need and

    eg.

    javac -source 1.6 -target 1.6 MyClass.java
    

    The source arg states that the source is written in that version of Java, thus List<String> strings = new ArrayList<>(); would be a compile error. Target tells the compiler to compile byte code that is aimed at the specified version of the JVM. Though I think 1.7 is fully backwards compatible with 1.5 and 1.6.

    0 讨论(0)
提交回复
热议问题