http://blog.csdn.net/wei801004/article/details/4318852
http://blog.csdn.net/ll136078/article/details/7360137
在RHEL5下安装配置JDK1.7
下载到任意目录下
执行 rpm -ivh jdk-1_5_0_17-linux-i586.rpm
此时,系统会开始安装JDK。安装结束后可以在/usr目录下发现新增了一个名为java的文件夹。该文件夹就是安装好的JDK目录。
4. 设置环境变量
a. 进入/etc文件夹,找到文件profile并打开(命令为:#vi profile)。
b. 找到export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC,修改为下面
的形式(按i让编辑器处于插入状态):
JAVA_HOME=/usr/java
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASSPATH
按ESC退出编辑模式,在文件末尾输入:wq回车 保存并退出vi
5. 设置完毕后,保存文件。
重启Redhat后(或者使用 source /etc/profile 使配置文件立即生效)登录控制终端,键入:java -version;
如果出现java version “1.7.0”等字样,说明您的JDK已经安装成功了!
如果不能正常显示版本号可能是由于系统自带的是jdk1.4.2
需要卸载后才能使用java -version看到正确的版本号
rpm -e --nodeps java-1.4.2-gcj-compat-1.4.2.0-40jpp.112
source /etc/profile
java -version
就可以看到正确的版本号了
如果保存后输入java或javac会出现“cannot restore segment prot after reloc: Permission denied”错误解决方案:
解决的办法是在root用户下,修改/etc/selinux/config 文件,
把SELINUX=enforcing 改成 SELINUX=disabled。
然后,保存关闭,重启机器就可以了。
cannot restore segment prot after reloc: Permission denied 解决方法
编辑/etc/selinux/config,找到这段:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
把 SELINUX=enforcing 注释掉:#SELINUX=enforcing ,然后新加一行为:
SELINUX=disabled
保存,关闭。
......
编辑/etc/sysconfig/selinux,找到:
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=enforcing
如果SELINUX已经是 SELINUX=disabled,那么就不用改了,否则就把SELINUX=enforcing 注释掉,新加一行:
SELINUX=disabled
保存,退出。
如果你碰到其他类似提示:
cannot restore segment prot after reloc: Permission denied
哪应该是SELinux的问题,可以考虑把它关闭。
-------------------------------------------------------------------------------------
郁闷的是.我把SELinux关闭后还是不行.于是到google上search.发现这个很有用.
在你保证SElinux 被disable后.还执行下
chcon -t texrel_shlib_t
如: chcon -t texrel_shlib_t /路径/路径/名字.so (这个文件视具体执行文件.)
以上两步.已经解决了很多server的问题了.
linux下java unrecognized class file version错误的解决
环境:RedHat Linux Enterprise 5.4
问题:java.sun.com下载jdk1.60和jre1.60的bin文件,sh ./某某某.bin安装之后,
编译HelloWorld.java,生成HelloWorld.class文件,
但是java HelloWorld却不能执行。
出现如下错误:
[root@MrjavaPC]# javac HelloWorld.java [root@MrjavaPC]# ls HelloWorld.class HelloWorld.java 计算器.java 计算器.java~ [root@MrjavaPC]# java HelloWorld Exception in thread “main” java.lang.ClassFormatError: HelloWorld (unrecognized class file version) at java.lang.VMClassLoader.defineClass(libgcj.so.7rh) at java.lang.ClassLoader.defineClass(libgcj.so.7rh) at java.security.SecureClassLoader.defineClass(libgcj.so.7rh) at java.net.URLClassLoader.findClass(libgcj.so.7rh) at gnu.gcj.runtime.SystemClassLoader.findClass(libgcj.so.7rh) at java.lang.ClassLoader.loadClass(libgcj.so.7rh) at java.lang.ClassLoader.loadClass(libgcj.so.7rh) at gnu.java.lang.MainThread.run(libgcj.so.7rh)
[root@MrjavaPC]#
初步解决方法和分析
在执行的时候打入完整路径。如下:
[root@MrjavaPC]# /usr/java/jre1.6.0/bin/java HelloWorld
Hello World!
[root@MrjavaPC]# 可见,PATH出了点小问题。 其实查一下java版本就晓得问题出在哪里了。
[root@MrjavaPC]# java -version java version “1.4.2″ gij (GNU libgcj) version 4.1.1 20061011 (Red Hat 4.1.1-30)
Copyright (C) 2006 Free Software Foundation, Inc. This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
[root@MrjavaPC]#
这个异常一般是因为你用的JRE/JDK的版本和代码编译时候不一致造成的,一般是jre的版本太低了。
这里,version是”1.4.2“,而咱们装的是1.6.0,所以有 (unrecognized class file version)一说。 解决的方法一: 在执行的时候打入完整路径。如下:
[root@MrjavaPC]# /usr/java/jre1.6.0/bin/java HelloWorld Hello World!
解决的方法二: 在linux根路径下找到.bash_profile文件,
在文件中加入以下内容:
export JAVA_HOME=/usr/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/rt.jar