码农博客 即将到期,现将博客中部分文章转载到博客园。本文发表与2012年,转载时略有删减
安装JDK其实只要搞定两个问题,安装目录以及配置文件。如果你只想要快速安装JDK,请略过此部分直接看安装篇。

分析篇

目录分析

网上的安装JDK资料中安装目录基本有两种——/opt和/usr/local。这两个目录安装在哪里其实都无所谓,只不过在以前的linux中人们习惯将软件安装在/usr/local中。这里推荐/opt目录。
配置文件分析
网上好多人提到了/etc/environment,/etc/profile,/etc/bash.bashrc,~/.bashrc 这四个配置。那JDK环境变量到底应该配在哪里呢?

各配置文件意义

  • /etc/environment:设置整个系统的环境,与登录用户无关
  • /etc/profile:系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行并从/etc/profile.d目录的配置文件中搜集shell的设置
  • /etc/bash.bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
  • ~/.bashrc: 该文件包含专用于该登录用户bash shell的bash信息,当登录时以及每次打开新的shell时该该文件被读取

各配置的生效时间

  • /etc/environment:重启生效
  • /etc/profile:注销后登录生效
  • /etc/bash.bashrc:重新打开bash shell后生效
  • ~/.bahsrc:重新打开bash shell后生效

对于安装JDK来说,JDK的环境变量肯定是与用户有关的,所以/etc/environment就不太适合,而用户可能不只一个,所以 ~/.bahsrc也不适合。
我首先想到的就是将JDK环境变量配置在/etc/profile中。可是这样遇到了点小问题。 配置好后注销系统后登录,对于普通用户java环境变量生效了,但sudo su获得root权限后java环境变量就不可用了。如下图:

查阅资料,可以su – root这样切换到root用户后才会生效。如下图:

如果你此时使用root用户登录,运行java -version看的话其实JDK环境变量是生效的。我怀疑sudo su虽然获得了root权限,但是root用户是没有登录的,所以root用户就没有执行/etc/profile。还有man su,“-”的意思是“使得shell为可登录的shell”。
另外如果将JDK环境变量配置在/etc/bash.bashrc中,如果java程序不是在shell中启动的,比如eclipse,这样就读不到JDK环境变量,导致无法运行。
经过上面的分析给出解决方案:
将JDK同时配置在/etc/profile和/etc/bash.bashrc中

安装篇

一、下载JDK安装文件

32位系统请下载 jdk-6u37-linux-i586.bin
64位系统请下载 jdk-6u37-linux-x64.bin
我这里使用64位版本

二、拷贝JDK文件到/opt目录

# mv jdk-6u37-linux-x64.bin /opt

三,授权,并执行

 chmod +x jdk-6u37-linux-x64.bin
 ./jdk-6u37-linux-x64.bin

四,设置环境变量

 vim /etc/profile
 vim /etc/bash.bashrc

在两个文件的末尾都加上下面一段

#set java environment
export JAVA_HOME=/opt/jdk1.6.0_37
export JRE_HOME=/opt/jdk1.6.0_37/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

五,重新打开终端,搞定

java –version

ubuntu下安装JDK详解的更多相关文章

  1. Centos下安装jdk详解

    环境: 系统: [root@Wulaoer ~]# cat /proc/version Linux version 2.6.32-431.el6.x86_64 (mockbuild@c6b8.bsys ...

  2. Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法

    Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法: https://blog.csdn.net/mingjie1212/article/details/485250 ...

  3. Ubuntu下安装JDK以及相关配置

    1.查看系统位数,输入以下命令即可 getconf LONG_BIT 2.下载对应的JDK文件,我这里下载的是jdk-8u60-linux-64.tar.gz 3.创建目录作为JDK的安装目录,这里选 ...

  4. Ubuntu下安装JDK详细教程

    Ubuntu下安装JDK详细教程 作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ Ubuntu版本:Ubuntu-12.04.5-desktop-i386 ...

  5. Ubuntu下安装JDK图文详解

    很详细的在Ubuntu中安装JDK图文详解教程,我们选择的是jdk1.6.0_30版本.安装文件名为jdk-6u30-linux-i586.bin. 1.复制jdk到安装目录 (1)假设jdk安装文件 ...

  6. Ubuntu下安装JDK图文解析

    我们在64位的Ubuntu中安装JDK,选择的是jdk1.6.0_32版本号.安装文件名称为jdk-6u32-linux-x64.bin(这个是64位系统的),假设是32位系统的还须要去官网下载32位 ...

  7. ubuntu下安装JDK并搭建activeMQ

    1.安装JDK,网上有人说activeMQ支持持JDK1.7及以上版本,未实际测试,保险起见我这里直接安装JDK1.7. #apt-get install openjdk--jdk 2.设置环境变量 ...

  8. ubuntu下安装jdk

    参考:http://blog.csdn.net/gobitan/article/details/24322561 Ubuntu Linux下安装Oracle JDK Dennis Hu 2014-4- ...

  9. Linux(ubuntu)下安装JDK、Tomcat

    一.安装jdk 1)首先以root用户登录进去,在根目录下建立opt的目录,我们将下载的东西都放到该目录下去. 2)下载j2sdk ,如jdk-6u31-linux-i586.bin 下载地址如下ht ...

随机推荐

  1. 使用Schtasks命令的注意事项

    在使用Schtasks命令时遇到了两个棘手的问题,耗费了一点时间,出现这个问题的时候查找网络资源也找不到真正的解决方案,最后还是自己悟出来了原因,所以在此把这些问题记录下来.如下: 服务器环境:win ...

  2. 滤镜简单demo(转,供参考)

    NSURL *iamgeUrl = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"default" ...

  3. Android Studio 单刷《第一行代码》系列目录

    前言(Prologue) 本系列将使用 Android Studio 将<第一行代码>(书中讲解案例使用Eclipse)刷一遍,旨在为想入坑 Android 开发,并选择 Android ...

  4. O2O模式

    O2O即Online To Offline(在线离线/线上到线下) 是指将线下的商务机会与互联网结合,让互联网成为线下交易的前台,这个概念最早来源于美国.O2O的概念非常广 泛,既可涉及到线上,又可涉 ...

  5. Microsoft .NET Framework 4.0安装时发生严重错误 无法安装

    前几天安装Axure,电脑提示没有安装.NET Framework4.0,然后下载安装,又提示如下图所示情况: 在网上找了好多方法,大多都是打开cmd,输入net stop WuAuServ,修改注册 ...

  6. Extjs4.2布局——Ext.container.ViewportView

    先贴出官方文档的关于此布局的描述:“ 一个专门的容器用于可视应用领域(浏览器窗口). Viewport渲染自身到网页的documet body区域, 并自动将自己调整到适合浏览器窗口的大小,在窗口大小 ...

  7. Unity3D 自动打包整个项目(以AssetBundle实现)

    原地址:http://blog.csdn.net/huang7jiao/article/details/18370653 需求: 在移动开发中,手动控制资源的加载.释放和热更新,是很有必要的. 而Un ...

  8. 注入攻击-SQL注入和代码注入

    注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...

  9. hhtml from表单为什么能提交数据

    1.html的列表,分为list,table,form. form表单是专门用来提交数据的,即上传数据的.所以form表单默认是必须有提交按钮的,也就是必须要有个button type类型为submi ...

  10. 使用nginx做为静态服务器--监听两个域名配置

    #user  nobody; worker_processes  1; #error_log  logs/error.log; #error_log  logs/error.log  notice; ...