作者:杨鹏 Linux正以自由的精神席卷全球网络操作系统市场,而Java凭借其开放、先进的架构正迅速占领着高端软件领域。将这二者结合,便可通过Linux低廉的成本实现Java高级应用,在自由、高效的环境下充分发挥出Java的优势。因此,无论从成本还是性能上考虑,二者的结合都可谓是相得益彰。例如,现在热门的服务器端脚本jsp的推荐实现就是Linux上的Tomcat,而与Jboss结合更是极佳的EJB平台。 但是,Linux之所以未能在桌面应用等领域迅速普及,软件安装和设置复杂是一个重要原因。要在Linux下实现Java编程,其普通的环境设置可能令习惯了Windows的用户望而却步。其实,很多问题只需要简单的设置就能解决。 下面,笔者就以Red Hat Linux 7.2为例,谈谈JDK/JRE环境配置的过程。由于JDK1.x一般都自带JRE(Java Runtime Environment,Java运行时环境),不必另外安装,也就不单独讨论了。 建议不太熟悉Linux系统的读者,下载RPM格式的JDK包。只需要一条命令就可以完成安装: rpm -ivh j2sdk-1_x_x-linux.rpm 在默认情况下,安装路径是/usr/java/jdk1.x,那么相应的JRE目录就是/usr/java/jdk1.x/jre。安装完RPM包仅仅是个开始,要顺利编译运行Java程序,需要设置以下路径。 JAVA_HOME:指安装JDK的路径,例如/usr/java/jdk1.x。 JRE_HOME:与JAVA_HOME对应,其下的JRE目录,如/usr/java/jdk1.x/jre。 PATH:与Windows中Path含义一样,是Java、Javac等程序的执行路径,应当指向JDK和JRE下的BIN目录,但不要覆盖了原有路径,使用下面这条命令: eXPort PATH=$PATH:/usr/java/jdk1.x/bin:/usr/java/jdk1.x/jre/bin LD_ASSUME_KERNEL: 安装完成后,比较容易出现的问题是执行Java或Javac时停止响应。切换到另一操作台,可以看见数个同名进程,其中有一个Defunct。这是由于库间的版本冲突造成的,这时就需要输出这个变量,指定版本。 export LD_ASSUME_KERNEL =2.2.5 CLASSPATH:这是非常重要的环境变量,用于指定Java非核心库的位置,也就是说是否设置并不影响Java核心库的使用。通常是: /usr/java/jdk1.x/lib/tools.jar:/usr/java/jdk1.x/lib/dt.jar:. 这里要特别注意最后一个圆点,这是初学者比较容易碰到的问题。如果我们设置了ClassPath变量而没有这个圆点,那么执行一个最简单的HelloWorld程序的时候,系统会提示NoClassFoundError…错误。其原因就是Java根据ClassPath寻找类(别忘了Java程序是以类为单位的),而Linux系统的特点却是不会自动搜索当前目录,结果当然是找不到当前的类(如果不设置ClassPath,反而可以执行,这是由于当找不到该变量时,默认值就是当前路径)。圆点的作用就是在类搜索路径中加入当前目录。 以上工作完成后,大部分Java程序都应当可以正常运行了。如果仍然有问题,可能是系统中的某些库不兼容,可以通过安装Compat-c库来解决,包括compat-glibc-xx.x.x.rpm、compat-libs-xx.x.x.rpm和compat-egcs-xx.x.x.rpm,这些包都可以在Red Hat 7.2光盘上找到。安装完成后记得执行/usr/i386-glibc.../bin/i386...env.sh脚本,以设置相关环境。 另外,可能出现的问题是某些连接符号的问题,如Java要求/usr/lib下有libstdc++-libc6.1-1.so.2等这样一些库。实际上根据版本不同,它们可能只是指向libstdc++-2的连接,也可能是指向libstdc++-3的连接。这时,可以根据系统提示会找不到什么库,需参照该目录下的有关连接(因为可能仅仅只是版本的区别),手工建立到相应库的连接。 这样,所有的准备工作就算完成了。最后,建议将上述变量设置添加到/etc/profile中,以便每次启动时可以自动执行。 通过以上努力,相信你的Java程序已经可以在Linux上奔驰如飞了。
[1] [2] 下一页
(出处:http://www.sheup.com)