首页 > 其他分享 >项目开发环境搭建手记(2.Jdk安装——替代原有的OpenJDK)

项目开发环境搭建手记(2.Jdk安装——替代原有的OpenJDK)

时间:2023-09-04 15:04:54浏览次数:48  
标签:bin jre 1.7 java lib Jdk OpenJDK 手记 usr


作者:fbysss

前言:Centos下,Java已经安装好了,1.7版本的,但是并没有JAVA_HOME等环境变量。于是:


export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.9

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

但是,OpenJDK和Oracle的JDK还是有所不同。安装官方的版本感觉更好。

于是,下载Jdk7进行安装。

问题1:centos下,rz,sz这样的传输文件命令没有

解决1:

wget http://freeware.sgi.com/source/rzsz/rzsz-3.48.tar.gz

或者wget ftp://rpmfind.net/linux/centos/6.5/os/x86_64/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm

问题又来了:

rpm -rvh ./lrzsz-0.12.20-27.1.el6.x86_64.rpm

出现错误:

rpm: arguments to --root (-r) must begin with a /

解决2:

原来是命令敲错了。应该是

rpm -ivh./lrzsz-0.12.20-27.1.el6.x86_64.rpm

rpm -ivh jdk-7u71-linux-x64.rpm

Preparing...               ########################################### [100%]

packagejdk-2000:1.7.0_71-fcs.x86_64 is already installed

那么,java到底安装到哪里了?

rpm -ql jdk-7u71-linux-x64

输出:

 package jdk-7u71-linux-x64 is not installed

Why?搞什么东东呢

 

rpm -qa |grep java 查看已安装的包

Tips:如果要看更详细内容,可以用rpm -qai

 

[root@localhost sss]# rpm -qa |grep jdk

java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

jdk-1.7.0_71-fcs.x86_64

原来centos已经安装了这个玩意。在rpm自己的jdk的时候,并不是提示成功,而是提示已经有一个jdk了,就没有安装成功。

rpm -e jdk-1.7.0_71-fcs.x86_64

rpm -e java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

这样一来,至少1.7版的java不会再有了。

jdk-1.7.0_71-fcs.x86_64重新安装上了(注意,和rpm包名并不相同)

 

如此说来,原来可能也已经安装好了?也许刚才不用卸载也可以,不过是有两个1.7而已,通过JAVA_HOME,PATH和CLASSPATH等设置就可以了。

 

ls -l --full-time  /usr/java/jdk1.7.0_71可以看到,完整安装时间,表示的确是刚才安装的。

[root@localhost sss]# /usr/java/jdk1.7.0_71/bin/java-version

java version "1.7.0_71"

Java(TM) SE Runtime Environment (build 1.7.0_71-b14)

Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixedmode)

可以看到,这个java已经不是open jdk了。

ok。

 

vi /etc/profile

在文件尾部加入

export JAVA_HOME=/usr/java/jdk1.7.0_71

exportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

 

source /etc/profile

但是问题来了。

java -verion

出现的居然是

OpenJDK Runtime Environment (IcedTea6 1.13.0pre)(rhel-1.66.1.13.0.el6-x86_64)

OpenJDK 64-Bit Server VM (build 23.25-b01, mixed mode)

很容易查到,/usr/bin下面有一个java

[sss@localhost ~]$ ll /usr/bin/java

lrwxrwxrwx. 1 root root 22 Jan  5 20:30/usr/bin/java -> /etc/alternatives/java

发现这是一个链接

[sss@localhost ~]$ ll /etc/alternatives |grep java

可以看到更进一步的链接

lrwxrwxrwx. 1 root root 46 Jan  5 20:30 java ->/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

删除这个链接:

alternatives --remove java /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

[sss@localhost ~]$ ll /etc/alternatives |grep java

java -> /usr/lib/jvm/jre-1.5.0-gcj/bin/java

我去。。。居然自动链接了下一个版本。

看来这个alternatives是有来头的。


看了这篇文章,知道怎么做了。

 

可以想象,使用

alternatives  --config java

就可以看到多个版本的java管理起来了。

现在也不迟,还有一个1.5版本,我们不卸载了。直接增加一个sun的1.7版本:

 

如果中间弄错了,可以remove。要修改优先级的话,直接就是覆盖install,再打一遍

比如 alternatives --remove java/usr/java/jdk1.7.0_71/java   ——这个路径不存在,有问题,remove了。

 

[root@localhost sss]# alternatives --display java

java - status is manual.

link currently points to /usr/java/jdk1.7.0_71/bin/java

/usr/lib/jvm/jre-1.5.0-gcj/bin/java - priority 1500

slave keytool: /usr/lib/jvm/jre-1.5.0-gcj/bin/keytool

slave rmiregistry:/usr/lib/jvm/jre-1.5.0-gcj/bin/rmiregistry

slave jre_exports: /usr/lib/jvm-exports/jre-1.5.0-gcj

slave jre: /usr/lib/jvm/jre-1.5.0-gcj

/usr/java/jdk1.7.0_71/bin/java - priority 1000

slave keytool: (null)

slave rmiregistry: (null)

slave jre_exports: (null)

slave jre: (null)

Current `best' version is/usr/lib/jvm/jre-1.5.0-gcj/bin/java.

 

为啥还是1.5是 best呢?

原来是优先级的问题。

alternatives --install /usr/bin/java java/usr/java/jdk1.7.0_71/bin/java 1600

这样就改过来了。

Current `best' version is /usr/java/jdk1.7.0_71/bin/java.

 

这里还有两个非常实用的命令:

whichwhereis

因为我们在打命令的时候,比如javac,有时候并不知道是哪个版本,javac没有版本号这个参数,至少可以通过which javac看看它在哪个路径。

whereis则是把命令所在的目录都列出来。

这两个命令查找的都是环境变量$PATH(非全盘扫描),但which只找第一个,whereis全部。

/usr/bin/javac 没法知道版本,咋整呢?

ll /usr/bin/javac

[root@localhost sss]# ll /usr/bin/javac

lrwxrwxrwx. 1 root root 27 Jan  5 20:32/usr/bin/javac -> /usr/java/default/bin/javac

ll /usr/java/default/bin/,原来这个目录下也有java

java -version,ok,是正确的jdk

java和javac在同一目录,java没问题,javac也没问题。

ll --full-time /usr/java/default/ 也可以看到bin目录是刚才创建的。



标签:bin,jre,1.7,java,lib,Jdk,OpenJDK,手记,usr
From: https://blog.51cto.com/u_16245757/7350831

相关文章

  • JDK源码阅读:ArrayList原理
    ArrayList原理ArrayList集合底层数据结构ArrayList集合介绍List接口的可调整大小的数组实现。数组:一旦初始化长度就不可以发生改变数组结构特性增删慢:每次删除元素,都需要更改数组长度、拷贝以及移动元素位置。查询快:由于数组在内存中是一块连续空间,因此可以根据地址+索引的......
  • javaee spring jdk动态代理
    jdk动态代理packagecom.test.jdkProxy;publicinterfaceIUsersService{publicvoidinsert();}packagecom.test.jdkProxy;//目标类publicclassUsersServiceimplementsIUsersService{@Overridepublicvoidinsert(){System.out.println(&qu......
  • jdk 中的 keytool 的使用,以及提取 jks 文件中的公钥和私钥
    这里暂时只需要知道如何使用就可以了。首先是生成一个密钥,keytool-genkeypair-aliasfanyfull-keypassffkp123456-validity365-storepassffsp123456-keystorefanyfull.jks-keyalgRSA解释一下这里的选项,-alias密钥对的名称-keypass密钥密码-validity有效期,......
  • 通过代理连接本地vscode和远程服务器手记
    关键信息记录1.在WSL实测nc可实现代理流量转发ssh-ikey.pem<username>@<hostname>-o"ProxyCommand=nc-Xconnect-x<proxy-host>:<proxy-port>%h%p"2.windows无法使用nc,通过修改VS-CodeRemote-SSH插件的配置:"remote.SSH.path":"D:\......
  • stm32f411CEU6做HID键盘,使用stm32cubemx随手记录
    最近找到一个stm32f411开发板,买了很久之前测试完就没使用了现在来做个HID键盘用用下面这个是当时购买淘宝店铺下面的gitee链接有兴趣的可以看看WeActStudio.MiniSTM32F4x1:WeActStudioSTM32F401CEU6/STM32F411CEU6核心板资料Github镜像仓库(gitee.com)关于stm32f411ceu6......
  • 【随手记】远程连接orcale数据库(PLSQL、Navicat)
    如果不是为了图方便,最好在本地安装数据库不过安装Orcale确实有点麻烦,而且数据库是共同使用的,远程连接弄好了可以省去很多时间。具体操作这里不说了,网上都有,直接搜索PLSQL或者Navicat远程连接数据库就行。踩坑这里说一下我遇到的问题吧,我先用navicat远程连接的,下载好客户......
  • JDK20
    JDK20一、JDK下载步骤Oracle官网—>产品—>Java—>下载Java—>JDK20最新版本jdk-20_windows-x64_bin.exeJava下载JavaJDK20最新版本Oracle官网→产品→Java最新版本jdk-20_windows-x64_bin.exe二、配置环境变量操作系统变量名变量值注意......
  • lombok1.18.28无法在jdk21环境使用
    java:java.lang.NoSuchFieldError:Classcom.sun.tools.javac.tree.JCTree$JCImportdoesnothavememberfield'com.sun.tools.javac.tree.JCTreequalid'目前lombok在jdk21版本有缺陷关联问题https://github.com/projectlombok/lombok/issues/3393......
  • 你是如何阅读jdk源码的?
    阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是在你作为一个质量保证人员或一个小领导的时候如果你要做白盒......
  • JDK1.5在WIN7中显示时间不正确的问题解决
    最近发现一些新的windows操作系统中,JDK显示的时区不是正确的GMT+08的,而是默认的格林威治时间原以为是系统时区设置不对,但发现系统时间正确,时区也正确,就是JDK的不正确网上很多方法都是手动改tomcat设置,或者在代码中写死时区,这种做法都是治标不治本的于是继续查找根本所在后来几经比......