linux配置java环境变量(详细)

本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html

一. 解压安装jdk

在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 
执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车,当询问是否同意的时候,输入yes,回车。之后会在当前目录下生成一个jdk1.6.0_14目录,你可以将它复制到 任何一个目录下。

二. 需要配置的环境变量

1. PATH环境变量。作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把 jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等待,设置好 PATH变量后,就可以在任何目录下执行javac/java等工具了。 
2. CLASSPATH环境变量。作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。 
3. JAVA_HOME环境变量。它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。

以windows为例的话,需要配置3个环境变量:

JAVA_HOME = E:/Program Files/Java/jdk1.6.0_45;
path =【数据库的配置等等】 ;%JAVA_HOME%/bin;
CLASSPATH = .;$JAVA_HOME/lib/dt.jar;$JAVA_HOME/lib/tools.jar

特别注意----注意 java_home不带bin path带bin classpath带.; 配的是jdk地址不是jre!

三.  3种配置环境变量的方法

1. 修改/etc/profile文件

如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性问题。 
·用文本编辑器打开/etc/profile 
·在profile文件末尾加入(linux版本)

export JAVA_HOME=/usr/share/jdk1..0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

重载配置

source /etc/profile

特别注意----windows用 ; 分割   linux用 : 分割!

·重新登录 或者用root执行 . /etc/profile (注: . 和 /etc/profile 之间有空格)

补充说明:
a. 你要将 /usr/share/jdk1.6.0_14改为你的jdk安装目录 
b. linux下用冒号“:”来分隔路径 
c. $PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值 
在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种 
常见的错误。 
d. CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。 
e. export是把这三个变量导出为全局变量。 
f. 大小写必须严格区分。

2. 修改.bash_profile文件

这种方法更为安全,它可以把使用这些环境变量的权限控制到用户级别,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bash_profile文件就可以了。 
·用文本编辑器打开用户目录下的.bash_profile文件 
·在.bash_profile文件末尾加入:

export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

·重新登录 或者 source .bash_profile

3. 直接在shell下设置变量

不赞成使用这种方法,因为换个shell,你的设置就无效了,因此这种方法仅仅是临时使用,以后要使用的时候又要重新设置,比较麻烦。 
只需在shell终端执行下列命令: 
export JAVA_HOME=/usr/share/jdk1.6.0_14 
export PATH=$JAVA_HOME/bin:$PATH 
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

四. 测试jdk

1. 用文本编辑器新建一个Test.java文件,在其中输入以下代码并保存: 
public class test { 
public static void main(String args[]) { 
System.out.println("A new jdk test !"); 


2. 编译:在shell终端执行命令 javac Test.java 
3. 运行:在shell终端执行命令 java Test 
当shell下出现“A new jdk test !”字样则jdk运行正常。

五. 卸载jdk

·找到jdk安装目录的_uninst子目录 
·在shell终端执行命令./uninstall.sh即可卸载jdk。

以下异常都属于JDK ,JRE安装问题:

JAR不是内部或外部命令

查看jdk

whereis java

which java

linux jdk版本不一致问题且不生效的问题

@2019-10-22在linux遇到该问题

linux中java -version与etc/profile配置的java版本有时候会不一致, 先使用which java 查看当前java路径  , 显示 /usr/bin/java , 说明用的是默认的jdk

解决此次改换jdk不生效问题前提:

  1. /etc/profile中已配置好jdk环境变量
  2. #echo $JAVA_HOME 能显示jdk的HOME路径

开始解决问题

rm -rf /usr/bin/java

ln -s $JAVA_HOME/bin/java /usr/bin/java

#java -version
#此时会报错 , 因为执行权限问题 chown root /usr/bin/java
chmod 755 /usr/bin/java /usr/bin/javac同理,但不一定需要配置.

rm -rf /usr/bin/java 执行前 , 以防万一提前把/usr/bin/java原始权限和所有者截了下图

ln -s $JAVA_HOME/bin/java /usr/bin/java 执行后 , 由于属性和所有者的权限问题,就导致了Permission权限问题  (后面截的图,时间不用关心)

chown root /usr/bin/java 和 chmod 755 /usr/bin/java 执行后

gc分析

$$$$$JVM GC调优一则--增大Eden Space提高性能==>https://blog.csdn.net/hengyunabc/article/details/24924843   (理解情况 Old Space增长缓慢,FullGC次数少,FullGC的时间短(大部情况应该要在1秒内)。)

http://gceasy.io/

https://www.v2ex.com/t/360097

jvm 参数里面缺少了对新生代的配置,可以通过 `-Xmn` 加上。

`Xms` 和 `Xmx` 都是设置成`Xmx` 的值,避免每次回收(因为初始空间小)之后又扩容.

Survivor Space 是新生代复制回收算法的一个区,其中分为 S0 和 S1,每次回收是这样进行的:Eden+S0->S1,Eden 和 S0 中存活的对象会移动到 S1 中,回收完成时,S0 变空。然后下一轮就是 Eden+S1->S0。

你可以使用 `jstat -gcutil pid  ` 来观察这个复制回收对新生代的影响。

然后开头的 `-server` 现在没什么用了,x64 的 jdk 自动都已经只有 server 模式了。

建议使用以下的参数:`-Xmx2g -Xms2g -Xmn512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseParallelOldGC -Xloggc:/somewhere/somename.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution`

这个设置将打印 gc 日志,可以使用 gceasy.io 来分析 gc 日志。

其它参考

Centos中yum方式安装java==>http://www.cnblogs.com/kevingrace/p/5870814.html

Linux rpm安装jdk1.8==>https://blog.csdn.net/daerzei/article/details/80136457

update-alternatives命令详解==>https://www.cnblogs.com/asnjudy/p/4637466.html

linux配置java环境变量jdk jre(详细)【转】的更多相关文章

  1. linux配置java环境变量(详细)

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  2. linux配置java环境变量(详细)(转)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  3. linux配置java环境变量

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  4. linux配置java环境变量(转)

    linux配置java环境变量(详细) 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586. ...

  5. Linux配置java环境变量 【随手记】

    JAVA环境变量 1. PATH环境变量.作用是指定命令搜索路径,在shell下面执行命令时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序. 2. CLASSPATH环境变量.作用是 ...

  6. linux配置java环境变量(详细) -copy

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车, ...

  7. linux配置java环境变量(详细)【转】

    转自:http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk 在shell终端下进入jdk-6u14-linux ...

  8. linux配置java环境变量 转过几个,这个最详细和靠谱

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录,之后会在当前目录下生成一个jdk1.6.0_14目录二. 需要配置的环境变量 1. PATH环境 ...

  9. linux配置java环境变量(详细) [转]

    一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录, 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议,连继敲回车, ...

随机推荐

  1. [BUAA_SE_2017]个人项目-Sudoku

    个人项目作业-数独 Github项目地址 时间预估 PSP2.1 Personal Software Process Stages 预估时间(分钟) 实际耗时(分钟) Planning 计划 60 · ...

  2. JavaScript表单验证登录

    在登录时,通常是将输入的信息原封不动的传送给后端的处理程序,然后处理之后返回结果,那么可能后端服务器的压力就很大,所以可以先在提交表单之前进行一些简单的检测,然后再发给后端,减小服务器的一部分压力: ...

  3. 使用telnet模拟http请求

    HTTP 首先我们需要知道http报文是由一系列的字符串组成的.然后我们来了解具体的相关事项. 方法 HTTP支持几种不同形式的请求命令,这些命令就被称为HTTP方法.每个HTTP请求报文都包含一个方 ...

  4. html的表格 table

    創建表格: 每一個表格以table開始: 每一個表格行以tr開始: 每一個數據以td開始:td的內容可以文本.圖像.表格.表單.段落等. 表格邊框: border設置邊框的粗細,但無法設置行間距,也無 ...

  5. Google社交梦之隐私问题

    导读 2011年6月底,Google+ 作为Facebook最有力狙击者的身份诞生,同时以隐私功能作为两者主要区分点:2018年10月,Google+被曝发生重大隐私泄露问题,消费版本被宣布仅剩10个 ...

  6. BZOJ1036[ZJOI2008]树的统计——树链剖分+线段树

    题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v ...

  7. 【BZOJ3551】【BZOJ3545】 【ONTAK2010】 Peaks (kruskal重构树+主席树)

    Description ​ 在\(Bytemountains\)有\(~n~\)座山峰,每座山峰有他的高度\(~h_i~\). 有些山峰之间有双向道路相连,共\(~m~\)条路径,每条路径有一个困难值 ...

  8. Hdoj 1064 Financial Management

    题目描述 Problem Description Larry graduated this year and finally has a job. He's making a lot of money ...

  9. 沉迷Link-Cut tree无法自拔之:[BZOJ3669][Noi2014] 魔法森林

    来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 $ $ 有一个很好的做法是 \(spfa\) ,但是我们不聊 \(spfa\) , 来聊 \(LCT\) \(L ...

  10. CPP--借助神器VS理解内存存储(含大小端对齐)

    单位,补码之类的可以看这个:http://www.cnblogs.com/dotnetcrazy/p/8178175.html 先说说大小端对齐的事情,然后再看: 内存最小单位==>Byte,i ...