zoukankan      html  css  js  c++  java
  • 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:WindowsSystem32目录下的java.exe、javaw.exe、javac.exe删除。
    2.安装jdk8,将系统环境变量path中的C:ProgramDataOracleJavajavapath;删除。
    3.编辑并启动eclipse.bat文件。

    @echo off

    set JAVA_HOME_7=F:eclipsejava7
    :: echo JAVA_HOME_7=%JAVA_HOME_7%

    set JAVA_HOME_8=F:eclipsejava8
    :: 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 ools.jar
    :: echo CLASSPATH=%CLASSPATH%

    :: echo path=%path%
    set path=%path%;%JAVA_HOME%in;%JAVA_HOME%jrein;
    :: echo path=%path%

    start F:eclipseeclipseeclipse.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.6injavaw.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

    enter image description here

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

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

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

    enter image description here

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

    enter image description here

    环境变量配置后,但是安装以后出现以下问题:
    通过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:WindowsSystem32目录,由于这个目录在WINDOWS环境变量中的优先级高于JAVA_HOME设置的环境变量优先级。

    解决方案:

    删除C:WindowsSystem32目录下的java.exe,删除即可。

    注意: 如果Path中有 C:ProgramDataOracleJavajavapath; ,删除之。否则会引变量错误。

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

    enter image description here

    总结

    在经历了被社区编辑器各种虐待后,终于把教程写出来了,(还是怪自己,对社区编辑器不熟悉,以后会多加练习的)。苦苦熬了一晚上的夜终于弄出来了,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/

     
     
     
     
     
     
     
  • 相关阅读:
    [转]C#汉字转拼音的源码
    [转]C# DES 加密/解密类库,支持文件和中文/UNICODE字符,返回BASE64编码字符串
    48瓶子,48种性格
    “识谎”36计
    巧克力有益智商 经常吃可提高大脑计算能力
    调用方未由服务进行身份验证
    揭秘人体24小时使用手册
    [转]C#实现人民币金额小写转大写的代码
    转一篇绝对详细的手工构造PE文件教程
    bat 查找某个进程的ID号
  • 原文地址:https://www.cnblogs.com/timssd/p/5523344.html
Copyright © 2011-2022 走看看