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.exe、javaw.exe、javaws.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/

本文仅用于学习和交流目的,不代表图灵社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接

时间: 2024-10-17 07:27:48

jdk1.6,jdk1.7共存的相关文章

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

JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载JDK(Java Development Kit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境.它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成. JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品.自从Java推出以来,JDK已经成为使用最广泛

HashMap jdk1.8 jdk1.7 put改动

之前hashmap处理冲突单纯使用链表法进行链接,1.8中,当一散列值中对应的链表长度超过8个后,会将链表转化为红黑树进行存储. 1.8中源码 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } /** * Implements Map.put and related methods * * @param hash hash for key * @param key the key

官网下载旧版本jdk,老版本jdk,jdk1.7,jdk1.8

1.进入中文oracle官网(不是国内官网下载速度超级慢): http://www.oracle.com/technetwork/cn/indexes/downloads/index.html 2.进入官网后往下浏览 如图点击javaSE 3.进入版本选择页面 浏览到底部如图点击 Java存档  DOWNLOAD 4.进入老版本jdk选择下载 5.选择jdk的系统版本 下载超快1分钟下载完毕 原文地址:https://www.cnblogs.com/shianliang/p/8638486.ht

Java中HashMap底层实现原理(JDK1.8)源码分析

这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JDK1.6.JDK1.7的.现在我来分析一哈最新的JDK1.8的HashMap及性能优化. 在JDK1.6,JDK1.7中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的链表都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找的效

【1】Jdk1.8中的HashMap实现原理

HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. 内部实现 HashMap的数据结构(字段) 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外.HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结构,但是在jdk1.8里 加入了红黑

jdk1.6的版本与下载地址

JDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK). SE(J2SE),standard edition,标准版,是我们通常用的一个版本,从JDK 5.0开始,改名为Java SE. EE(J2EE),enterprise edition,企业版,使用这种JDK开发J2EE应用程序,从JDK 5.0开始,改名为Java EE. ME(J2ME),micro edition,主要用于移动设备.嵌入式设备上的java应用程序,从JDK 5.0开始,改名为

Jdk1.8中的HashMap实现原理

本文主要参考:美团点评技术团队 HashMap概述 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特别是它不保证该顺序恒久不变. HashMap的数据结构 在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外.HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结构,但是在jdk1.8

Linux下安装JDK1.8

下载jdk1.8 下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件:选择符合自己操作系统版本的jdk安装文件,如下图所示: 解压安装 下载后的文件会在当前登录用户的home目录下的“下载”目录中,此处我们选择将它安装在当前登录用户的home目录下,新建一个文件夹名为jdk1.8(mkdir jdk1.8),移动刚刚下载的压缩文件 jdk-8u131-linux-x64.tar.gz 到该目录. 解压jdk1.8,使用命令 tar -zxvf jdk-8u131-linux-

【Java】用JDK1.5之后的新型数组遍历方法遍历HashMap、HashMap不应该存储多元组

在JDK1.5就多了一种for循环的遍历写法,现在应该没有人用JDK1.4了吧?我见那些2005年出的JAVA书,谭浩强系列的JAVA书都是使用JDK1.5了,当然JDK1.7已经使用的,据说JDK1.7是兼容JDK1.2~JDK1.7,现在的JAVA编程都是基于JDK1.5的.然而由于考试不要求或者其它什么原因,它并不受程序猿的青睐,而在平常实践用,旧式的循环中用多了,老程序猿依旧作为开发主力的情况,也就没有人敢于尝试这种新型的数组遍历方法了,其实这种方法在遍历HashMap的时候尤其有用,能