在CentOS 6中设置JAVA_HOME和CLASSPATH

Jun*_* Oh 25 java centos path noclassdeffounderror

我在/ usr/java /中解压缩了我的jdk.

我将CLASSPATH,PATH,JAVA_HOME放入/ etc/profile中,如下所示.

export JAVA_HOME=/usr/java/jdk1.7.0_21
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

当我在/usr/java/jdk1.0.7_21/bin中编译一些java文件时,

有用.但是当我在其他文件夹上做同样的事情时,却没有.

它显示NoClassDefFoundError.

所以我通过echo检查了ClASSPATH,PATH,JAVA_HOME.

它显示如下.

[root@localhost a]# echo $JAVA_HOME
/usr/java/jdk1.7.0_21
[root@localhost a]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/guest/bin:/usr/java/jdk1.7.0_21/bin:/usr/java/bin:/usr/java/jdk1.7.0_21/bin
[root@localhost a]# echo $CLASSPATH
/usr/java/jdk1.7.0_21/jre/lib/ext:/usr/java/jdk1.7.0_21/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

我想在控制台中使用java,我能做些什么呢?

提前致谢.

PS.我做了source /etc/profile.

=================我面临的错误=======================

当我命令java A(我的类名是A).

Error: Could not find or load main class A
Run Code Online (Sandbox Code Playgroud)

case我命令java -cp/home/guest/workspace/AAA/src/a/A.

Exception in thread "main" java.lang.NoClassDefFoundError: A (wrong name: a/A)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:791)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482)
Run Code Online (Sandbox Code Playgroud)

=====================我的代码的完整内容======================== ============== java部分.路径是/usr/guest/workspace/AAA/src/a/A.java

package a;

public class A {
    public static void main(String[] args) {
        System.out.println("a!\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

/ etc/profile部分.左边部分是默认的.

export JAVA_HOME=/usr/java/jdk1.7.0_21
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

其他部分可能有助于解决.

  • which java打印"/ usr/java/bin".有符号链接.
  • 我的jdk位置是/usr/java/jdk1.7.0_21.在./bin里面,每个代码都运行正常.
  • 我没有碰到/root/.bash_profile.我刚刚编辑了/ etc/profile.

谢谢你的兴趣.即使它没有想到.你的帮助对我很有帮助:D再次感谢.

小智 36

在这里搜索centos jre安装所有用户:

在CentOS中设置环境变量的最简单方法是使用导出

$> export JAVA_HOME=/usr/java/jdk.1.5.0_12

$> export PATH=$PATH:$JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

但是,以这种方式设置的变量是瞬态的,即它们会在您退出shell时消失.显然,在设置即使在系统重新启动时需要持久化的环境变量时,这也没有用.在这种情况下,您需要在系统范围的配置文件中设置变量.在CentOS(我使用的是v5.2)中,建议将文件夹/etc/profile.d/添加到系统配置文件中.例如,在安装Sun JDK时,可能需要设置JAVA_HOME和JRE_HOME环境变量.在这种情况下:创建一个名为的新文件 java.sh

vim /etc/profile.d/java.sh
Run Code Online (Sandbox Code Playgroud)

在此文件中,初始化必要的环境变量

export JRE_HOME=/usr/java/jdk1.5.0_12/jre
export PATH=$PATH:$JRE_HOME/bin

export JAVA_HOME=/usr/java/jdk1.5.0_12
export JAVA_PATH=$JAVA_HOME

export PATH=$PATH:$JAVA_HOME/bin
Run Code Online (Sandbox Code Playgroud)

现在当你重新启动你的机器时,java.sh中的环境变量将被自动初始化(如果你好奇如何加载/etc/profile.d/中的文件,请检查/ etc/profile).

PS:如果要在java.sh不必重新启动计算机的情况下加载环境变量,可以使用source命令,如下所示:

$> source java.sh
Run Code Online (Sandbox Code Playgroud)


小智 6

说明:

  1. 单击桌面面板中的" 终端"图标以打开终端窗口并访问命令提示符.
  2. 键入命令which java以查找Java可执行文件的路径.
  3. 输入命令su -以成为root用户.
  4. 键入命令vi /root/.bash_profile以在Vi文本编辑器中打开系统 bash_profile文件.您可以使用首选的文本编辑器替换vi.
  5. 键入export JAVA_HOME=/usr/local/java/文件的底部.替换/usr/local/java为第二步中找到的位置.
  6. 保存并关闭bash_profile文件.
  7. 键入命令exit以关闭根会话.
  8. 退出系统并重新登录.
  9. 键入命令echo $JAVA_HOME以确保正确设置路径.

在centos中设置java_home


pra*_*nth 3

我在 /home/prasanth 中创建了一个名为 a 的文件夹,并将代码复制到名为 A.java 的文件中。我从 /home/prasanth 编译为javac a/A.java并运行javac a.A. 我得到的输出为

a!
Run Code Online (Sandbox Code Playgroud)