jdk1.6,jdk1.7共存

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk1.6,jdk1.7共存相关的知识,希望对你有一定的参考价值。

当然可以,安装的时候记得选择不同的安装目录,安装好以后,可以在开发工具(如eclipse)中切换不同的编译环境和运行环境。其实只要安装eclipse就自带了jdk1.3-1.6的编译环境了。

技术分享

 

 

 

 

Mac下同时安装多个版本的JDK

JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下Java8的Lambda等新特性,可是目前Java企业级应用的主打版本还是JDK6, JDK7。因此,我需要在我的电脑上同时有JDK8,JDK7,JDK6。JDK6和JDK7主要是做一些产品代码的验证,以及自己玩一些开源项目,JDK8则纯属尝鲜,谁叫咱是喜新厌旧的程序员呢。 
目标 
在命令行下,可以通过命令‘jdk6‘, ‘jdk7‘,‘jdk8‘轻松切换到对应的Java版本, 默认初始设置为jdk7。 
做法 
1.首先安装所有的JDk: 
* Mac自带了的JDK6,安装在目录:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/下。 
* JDK7,JDK8则需要自己到Oracle官网下载安装对应的版本。自己安装的JDK默认路径为:/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk 
2. 在用户目录下的bash配置文件.bashrc中配置JAVA_HOME的路径: 
export JAVA_6_HOME=/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0.jdk/Contents/Home
export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
export JAVA_HOME=$JAVA_7_HOME
3.创建alias命令动态切换JAVA_HOME的配置 
alias jdk8=‘export JAVA_HOME=$JAVA_8_HOME‘
alias jdk7=‘export JAVA_HOME=$JAVA_7_HOME‘
alias jdk6=‘export JAVA_HOME=$JAVA_6_HOME‘
*验证* 
CNxnliu:Versions xnliu$ 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)
CNxnliu:Versions xnliu$ jdk8
CNxnliu:Versions xnliu$ java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
CNxnliu:Versions xnliu$

 

 

 

Windows下不同版本的JDK共存  

1.安装jdk7,将C:\Windows\System32目录下的java.exe、javaw.exe、javac.exe删除。
2.安装jdk8,将系统环境变量path中的C:\ProgramData\Oracle\Java\javapath;删除。
3.编辑并启动eclipse.bat文件。

@echo off

set JAVA_HOME_7=F:\eclipse\java7
:: echo JAVA_HOME_7=%JAVA_HOME_7%

set JAVA_HOME_8=F:\eclipse\java8
:: echo JAVA_HOME_8=%JAVA_HOME_8%

set JAVA_HOME=%JAVA_HOME_7%
:: echo JAVA_HOME=%JAVA_HOME%

set CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
:: echo CLASSPATH=%CLASSPATH%

:: echo path=%path%
set path=%path%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
:: echo path=%path%

start F:\eclipse\eclipse\eclipse.exe

:: cmd

另外,这种方式也免除了jdk7安装完成后需要手动设置环境变量的麻烦。

 

 

 

 

 

 

 

JDK1.6和JDK1.7共存和Eclipse出错

背景:

         JDK 都已经发布到1.8版本了,作为一个“怀旧”的programer,我对新版本一直没什么关注。一直都是项目需要哪个版本就用哪个版本JDK,而且我一直认为如果项目太过于依赖JDK版本的话,那开发和设计上太shit了!这几天由于一些原因需要切换到老版本的项目去做些东西。老版本(称为V1)使用的是JDK1.6开发的,新版本(称为V2)使用的是JDK1.7。现在需要两个版本的JDK共存,本以为很简单的事情,结果出了一堆问题。囧!!技术分享

 

问题:

    1.安装了JDK1.6,copy了eclipse,get了项目代码,但是公司的eclipse插件无法运行!

    2.指定了Eclipse启动时使用的JDK为1.6,报错code 13,无法启动Eclipse!

    3.解决了Eclipse启动问题和插件问题,分别为项目(两个工作空间)指定了JDK版本,但是1.7版本的无法运行,会显示“找不到或无法加载主类错误”!

    本来这个事件是很简单的,但是由于一些小的细节失误才导致自己绕了老大一个圈子。看来细节决定成败在哪儿都适用!

 

总结:

    1. JDK在大版本上是允许同时存在的,但是小版本上是不允许的;

    2. Eclipse本身是一个Java程序,这我们都知道,但是Eclipse启动的时候为什么找不到一个javaw进程呢?那是因为Eclipse默认调用的是jvm.dll,如果我们指定启动参数是javaw.exe那么会启动一个javaw.exe进程。

    3.Eclipse也会依赖一定版本的JDK,这要看你用哪个版本的Eclipse,一般来说它是向后兼容的,也就是JDK1.5能运行,JDK1.6、JDK1.7也可以。但是不保证Eclipse的插件在不同版本的JDK上也能良好运行,比如我们公司的插件,对JDK版本依赖就很强。

    4.Eclipse可以指定编译、运行Java程序的JDK版本,这个JDK版本和它本身运行时的JDK是不一样的,或者说两者毫无关系,可以是同一个JDK。

    5.Eclipse分32位和64位,必须配合32位和64位JDK,否则会报错!

 

过程:

    (1)Eclipse插件无法运行:

    原因:Eclipse启动时使用的JDK版本不符合插件要求。

    方法:指定Eclipse启动用的JKD,在eclipse.ini文件中添加如下参数,

-vm D:\JDK1.6\bin\javaw.exe

    结果:启动的时候会报下面的错误:

 

技术分享

    (2)Eclipse启动报错,code 13

    原因:至于eclipe.ini中指定的vm参数路径不对,或者是Eclipse的位数和JDK位数不一致。

    方法:下载32位JDK,重新安装,指定vm参数。

    PS:官网的JDK也不纯洁了,竟然向注册表写入了一些东西,然后无法卸载,只能下载个卸载工具,强制卸载清除注册表了。

    结果:重新安装符合要求的JDK后,Eclipse果然能启动了,先安装的1.6然后V1项目可以用了,然后安装了1.7,给Eclipse添加了JDK1.7的路径,然后为V2指定了编译级别,但是却发生了如下错误:

 

 技术分享

    (3)Eclipse指定JDK1.7编译级别报错,找不到主类

    原因:最后经过一些反复查找,才发现是Eclipse下新增JDK1.7时一个参数填错了!!

技术分享

    在Defalut VM arguments下面竟然多填写了一个JDK1.7。导致每次Eclipse运行的时候都会去找JDK1.7这个类。o(╯□╰)o

    方法:删除Defalut VMArguments参数。

 

    PS:如果没有安装JDK或者Jre的话,Eclipse启动会报如下错误:

 

 技术分享

最后吐槽下:

    公司插件竟然跟JDK依赖那么紧密,简直是shit!而且还没指导文档,浪费了近一天的时间!

然后就是Java竟然也不纯洁了,windows版下面竟然还有update程序,还会去注册表写东西!!!!你怎么能这样!

 

 

在windows上实现java6和Java8共存解决办法

问题背景

公司项目中应用到的jdk环境为1.6,最近在家学习IntelliJ IDEA中sdk多环境配置时,想安装Jdk1.8,作为学习基础。那么问题来了,公司项目扩展不支持jdk1.8,为了既能满足公司项目开发环境,又能满足学习jdk1.8的需要,当然不能每一次都进行jdk的安装和卸载,需要探索另一种新方法。

分析问题

为了多快好省的解决当前的问题,我的想法是在windows中同时安装jdk1.6和jdk1.8,在中间进行切换,而不需要多次进行重复的安装和卸载,这样简单方便。

解决思路

  1. 第一步:在安装之前,本机的jdk环境为jdk1.6,执行:java -version ,显示当前jdk版本为1.6

技术分享

  1. 第二步:安装jdk1.8,让两个jdk共存。安装教程是:直接 下一步 and 下一步安装完成后,对jdk环境变量进行如下设置:

    JAVA8_HOME =jdk1.8的安装路径
    JAVA6_HOME =jdk1.6的安装路径
    JAVA_HOME = %JAVA6_HOME% (注意:如果你想切换jdk,就在此处设置即可)

设置后环境变量如下图所示:

技术分享

  1. 第三步:添加%JAVA_HOME%\bin到环境变量Path中,添加后的Path如下图所示:

技术分享

环境变量配置后,但是安装以后出现以下问题:
通过java -version 查看显示,jdk显示为:jdk1.8
分析: 
当前jdk版本为1.8,这不科学,因为环境变量中配置的JAVA_HOME是1.6的路径,查看版本应该要是1.6的才对,现在变成1.8,jdk的环境变量未被改变,通过查询后发现问题:

在安装JDK1.8时(本机先安装jdk1.6再安装的jdk1.8),自动将java.exejavaw.exejavaws.exe三个可执行文件复制到了C:\Windows\System32目录,由于这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级。

解决方案:

删除C:\Windows\System32目录下的java.exe,删除即可。

注意: 如果Path中有 C:\ProgramData\Oracle\Java\javapath; ,删除之。否则会引变量错误。

  • 第四步:以上配置完成后,开启新 cmd 窗口,查看jdk版本显示正常,在环境变量中切换JAVA_HOME的值为: JAVA_HOME=%JAVA8_HOME% ,查看jdk版本,成功切换。如图所示:

技术分享

总结

在经历了被社区编辑器各种虐待后,终于把教程写出来了,(还是怪自己,对社区编辑器不熟悉,以后会多加练习的)。苦苦熬了一晚上的夜终于弄出来了,PS:是被某只猫点醒的,虽然很LOW,还是要感谢他 , 阿里嘎多!! 
这篇教程还有很多不足、没有考虑到的地方,希望大家一起努力,去完善它,让它更完美。谢谢! 这篇文章我参照引用的有以下链接:

https://coderwall.com/p/gbek2g/java-6-and-java-7-on-windows
http://blog.sina.com.cn/s/blog_437ee9d00101isob.html
http://blog.163.com/[email protected]/blog/static/68117214201521211149742/

 
 
 
 
 
 
 

 

 

以上是关于jdk1.6,jdk1.7共存的主要内容,如果未能解决你的问题,请参考以下文章

多jdk环境变量配置问题(jdk1.6,jdk1.7,jdk1.8)

jdk1.6与1.7的区别?

JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载

如何在Java 6中使用为Java 7编译的库?

在使用JDK1.7及以上版本时无法连接数据库、无法连接sftp. 只有将环境变量改为JDK1.6后才可以使用。

jdk1.6的配置