Chinaunix首页 | 论坛 | 博客
  • 博客访问: 50004
  • 博文数量: 16
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-06 12:42
文章分类
文章存档

2011年(1)

2009年(6)

2008年(9)

我的朋友

分类: LINUX

2008-11-08 13:32:59

jdk和jre的环境问题,是很多java新手的一大障碍,大多数学习java的人,或多或少的都遇到过一些环境设置的问题,那个恼人的 ClassNotFound始终是挥之不去的阴影。我自己已经很久没有遇到过这个问题了,我把自己在配置这个方面的经验与大家共享,希望能够帮助大家更好 的促进的java环境的理解,少花时间在配制恼人的环境上,可以更快得集中到应用开发中去。

刚开始学java,也是在windows平台上,由于用的环境并不复杂,所以基本上没有遇到很多麻烦,后来到了Linux上的时候发现其实环境配置比我想 象的简单多了,通过在linux上的java环境的配置,让我更直接的理解了java对环境的要求,把这些技巧用到windows上来,发现同样也适用。 所以我就从linux讲起吧。

jdk和jre的安装,在linux下,最简单的是下载self-extract的安装包,其实就是一个文件,在linux下文件执行需要被赋予执行的权限,所以可以用chmod命令

chmod +x j2sdk1.5.0.03.bin

然后输入

./j2sdk1.5.0.03.bin
就开始执行,在自解压之前,会出现license信息,要你按空格往下翻到最后一页,然后输入yes回车表示接受这个license,就开始解压,解压完 了,就在当前目录下创建了j2sdk1.5.0_03这个目录。JAVA_HOME理论上可以是任何普通目录,当然,如果你安装以后希望系统中的任何用户 都可以用,就放在一个公共区域,而不是私人区域,比如我的放在 /usr/local/java 下面, 有的系统放在 /opt/java 下面。

很多开发工具和应用软件真正需要的一个环境变量叫做JAVA_HOME,你可以把JAVA_HOME指向你jdk的解压目录,在linux下,可以输入以下命令

export JAVA_HOME=/usr/local/java/j2sdk1.5.0_03

然后把java的可执行文件加入到path
PATH=$JAVA_HOME/bin:$PATH

这样,基本上你的java的应用,开发工具运行都没什么大问题了。如果你希望以开机就自动设置这样的环境,可以把它放到你的.bash_profile里 面,如果你是管理员,希望所有用户都能用这个环境,把它放到 /etc/profile 等等公共的profile设置就可以了。如果你默认的shell不是bash,可能命令和配置文件的名字有所不同,但是基本概念是一样的。要特别注意的是 在linux/unix下面变量名和目录/文件名是大小写敏感的!

这样做有一个好处,就是你的系统中可以同时存在多个不同版本的JDK,有的时候我的确需要这种转换。比如,我以前开发的一些应用在jdk1.4下面开发 的,现在总体环境都升到1.5了,由于1.5增加了一些新的保留字,以前1.4可以使用的一些方法和名称现在不能用了,最典型就是enum,如果你用 jdk1.5编译则不能通过,如果修改代码以适应新版本则工作量太大,所以旧程序的改进我希望在1.4下面进行。由于1.5下仍然可以使用旧版本编译好的 class(我讨厌.net的理由之一是新版本的环境不能使用旧版本已经编译好的dll,必须修改代码以完全符合新版本的要求重新编译成新的dll才能使 用,如果你原来用的dll不是open source的,嘿嘿...),所以我只要能重新恢复到旧版本进行修改和编译以前旧的软件包就可以了。在这种情况下,我只要修改JAVA_HOME指向到 另一个版本的JDK所在的目录,然后直接启动任何编辑工具netbeans或者eclipse,修改完了编译通过,然后改回JAVA_HOME就可以了, 让多个版本的JDK共存是非常简单的。

事实上在windows下面我也是这么做的。
用右键点“我的电脑”,选择“属性”,然后切换到“高级”,下面有个“环境变量”按钮,在“系统变量”里面创建一个,起名为JAVA_HOME,然后值就是你的jdk安装的目录,我的是C:\Program Files\Java\jdk1.5.0_03
然后在“用户变量”里面,寻找PATH,如果没有,则创建一个,输入%JAVA_HOME%\bin ,需要注意的是你要用%JAVA_HOME%只有在用户变量才有效,在系统变量中使用%JAVA_HOME%似乎没有作用。

这样,当我需要旧版本的时候,只要在dos窗口中输入SET JAVA_HOME=c:\j2sdk1.4.2_06 就可以了.
修改过环境变量以后重新启动相关的应用,或者重新打开dos窗口就可以生效了(修改之前就打开的dos窗口当然不会生效)

这种环境变量的设置还可以用于ant,在系统变量里面设置ANT_HOME,在用户变量里面增加PATH的值 %ANT_HOME%\bin

如果你使用了第三方包的话,我不建议放在%JAVA_HOME%\jre\lib\ext 下面,因为万一升级jdk的话,你就必须copy这些第三方包到新的目录下去。

要特别注意的是PATH,因为你的系统中可能存在不同版本的java,可能你从sun网站上下载了jre或者jdk,也可能你安装了jbuilder,里 面带了另外一个版本的jre或者jdk,还有ibm的jikes,等等,这就造成了一个混淆。你必须要打开一个dos窗口输入java -version看看你到底用的是哪个jre,很多时候由于你开发用的jre和运行用的jre版本不同造成了很多困扰,所以有必要清理一下你的环境变量以 解决这些混淆的问题,确保你的开发环境和运行环境使用相同的jre

CLASSPATH问题:
我从来不在我的系统环境变量里面设置CLASSPATH,因为很多时候每个应用程序使用的CLASSPATH是不同的,尤其是你在特定的应用服务器下面, 配置更是不同。所以复杂的程序,就用ant来管理启动,ant可以设置自动从指定的目录下load class,以及自动导入所有的jar,非常方便。如果要交付,就设计一个bat来启动,(象tomcat之类的服务器程序),还可以用jsmooth编 译成exe 或者也可以用wrapper 把程序包装为一个exe启动甚至是windows的系统服务。关于这些第三方工具的使用以后我逐渐发帖与大家共享。

附一个讲CLASSPATH设置的帖子


另外还有这个搜索。。
还是值得多多了解下linux基本运行原理

阅读(794) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~