Linux下配置JDK以及报cannot restore segment prot after reloc: Permission denied错解决方案

32 篇文章 0 订阅

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。  

然后,保存关闭,重启机器就可以了。

 

 

环境:Linux localhost.localdomain 2.6.18-92.el5PAE 
apache2+ php 4整合完毕后启动apache 时报错 
root@localhost fgn]# /usr/local/apache/bin/apachectl restart 
httpd: Syntax error on line 53 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/libphp4.so into server: /usr/local/apache/modules/libphp4.so: cannot restore segment prot after reloc: Permission denied 
解决:   www.2cto.com  
这是因为SELINUX的问题,需要关闭SELINX,执行/usr/sbin/setenforce  0 

 

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值