jdk1.6,jdk1.7共存
当然可以,安装的时候记得选择不同的安装目录,安装好以后,可以在开发工具(如eclipse)中切换不同的编译环境和运行环境。其实只要安装eclipse就自带了jdk1.3-1.6的编译环境了。
Mac下同时安装多个版本的JDK
目标
在命令行下,可以通过命令'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共存
@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,在中间进行切换,而不需要多次进行重复的安装和卸载,这样简单方便。
解决思路
- 第一步:在安装之前,本机的jdk环境为jdk1.6,执行:
java -version
,显示当前jdk版本为1.6
第二步:安装jdk1.8,让两个jdk共存。
安装教程是:直接 下一步 and 下一步
安装完成后,对jdk环境变量进行如下设置:JAVA8_HOME =jdk1.8的安装路径
JAVA6_HOME =jdk1.6的安装路径
JAVA_HOME = %JAVA6_HOME% (注意:如果你想切换jdk,就在此处设置即可)
设置后环境变量如下图所示:
- 第三步:添加
%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/lvan100@yeah/blog/static/68117214201521211149742/
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和 ...
- jdk1.5 jdk1.6 jdk1.7 jdk1.8 下载地址
是不是有很多朋友在oracle找不到历史版本的下载地址哈.... 下载我亲情奉献,有人的捧个人场..... 嘻嘻 jdk1.5updatex所有版本下载地址: http://www.oracle.co ...
- 64位linux安装了32位jdk8报错怎么办-bash:/usr/local/jdk1.8/jdk1.8.0_181/bin/java:/lib/ld-linux.so.2:badELFinterpreter:Nosuch
-bash:/usr/local/jdk1.8/jdk1.8.0_181/bin/java:/lib/ld-linux.so.2:badELFinterpreter:Nosuch https://bl ...
- String.intern() 方法__jdk1.6与jdk1.7/jdk1.8的不同
1.为什么要使用intern()方法 intern方法设计的初衷是为了重用string对象,节省内存 用代码实例验证下 public class StringInternTest { static f ...
- HashMap实现原理(jdk1.7/jdk1.8)
HashMap的底层实现: 1.简单回答 JDK1.7:HashMap的底层实现是:数组+链表 JDK1.8:HashMap的底层实现是:数组+链表/红黑树 为什么要红黑树? 红黑树:一个 ...
- jdk1.6,jdk1.7和jdk1.8多版本切换
目录 一.配置jdk1.7(win7系统) 二.jdk1.8切换回jdk1.7 三.最后强调可能出现不成功的原因 首先要明确jdk一般都是默认安装在C:\Program Files\Java下的,在配 ...
- HashMap jdk1.8 jdk1.7 put改动
之前hashmap处理冲突单纯使用链表法进行链接,1.8中,当一散列值中对应的链表长度超过8个后,会将链表转化为红黑树进行存储. 1.8中源码 public V put(K key, V value) ...
- 官网下载旧版本jdk,老版本jdk,jdk1.7,jdk1.8
1.进入中文oracle官网(不是国内官网下载速度超级慢): http://www.oracle.com/technetwork/cn/indexes/downloads/index.html 2.进 ...
- Java中HashMap底层实现原理(JDK1.8)源码分析
这几天学习了HashMap的底层实现,但是发现好几个版本的,代码不一,而且看了Android包的HashMap和JDK中的HashMap的也不是一样,原来他们没有指定JDK版本,很多文章都是旧版本JD ...
随机推荐
- wampserver php 设置时间
php.ini 查找date.timezone = Europe/Paris 修改成亚洲地区 date.timezone = Asia/Shanghai
- Yii console 创建命令行应用
大家都知道PHP的程序没有进程概念,而且生命周期极短,无法实现一些定时计划或者是计划任务,今天我们看看在YII框架中如何使用计划任务创建命令行应用. 1.在 console/controllers 文 ...
- Mvc中使用MvcSiteMapProvider实现站点地图之基础篇
MvcSiteMapProvider 是针对 ASP.NET MVC 中,提供菜单. 网站地图. 站点地图路径功能,以及更多的工具.它提供配置使用一个可插入的体系结构,可以是 XML. 数据库或动态生 ...
- js监听和观察者模式
http://redhacker.iteye.com/blog/1756436 https://developer.mozilla.org/en-US/docs/Web/Guide http://ww ...
- bzoj3293 [Cqoi2011]分金币&&bzoj1045 [HAOI2008]糖果传递
Description 圆桌上坐着n个人,每人有一定数量的金币,金币总数能被n整除.每个人可以给他左右相邻的人一些金币,最终使得每个人的金币数目相等.你的任务是求出被转手的金币数量的最小值. Inpu ...
- wordpress参考网站
wordpress大学http://www.wpdaxue.com/post-tags-and-categories-for-pages.html
- 网易云课堂_C++程序设计入门(上)_第5单元:万类霜天竞自由 – 对象和类的更多内容_第5单元作业【4】 - 在线编程(难度:难)
第5单元作业[4] - 在线编程(难度:难) 查看帮助 返回 温馨提示: 1.本次作业属于Online Judge题目,提交后由系统即时判分. 2.学生可以在作业截止时间之前不限次数提交答案,系 ...
- 济南最新公交线路一览(BRT)
济南最新公交线路一览(BRT) 济南BRT1路 高速公交线路 黄岗路东5:30-21:30 全福立交桥西5:30-21:30 票价1元,刷卡9折,月票有效 高速公交公司 去程:黄岗路东(BRT) - ...
- 吐槽下CSDN编辑器
Perface 近期喜欢上了markdown,我认为它就是一些HTML标签的快捷键,用一些符号来取代标签,易学易读易用,何乐而不为呢?近期也喜欢用印象笔记来让我的记忆永存,确实它强大的收集能力让我迷上 ...
- Javascript自由拖拽类
基本拖拽配置 new Dragdrop({target 拖拽元素 HTMLElemnt 必选bridge 指定鼠标按下哪个元素时开始拖拽,实现模态对话框时用到 dragable 是否可拖拽 (true ...