25

我已经在 /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

当我在 /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

我想在控制台中使用java,我该怎么办?

提前致谢。

PS。当然我做到了source /etc/profile

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

当我命令 java A 时(我的班级名称是 A)。

Error: Could not find or load main class A

案例我命令 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)

=====================我的代码的全部内容======================== ============== 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");
    }
}

/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

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

  • which java打印“/usr/java/bin”。有符号链接。
  • 我的 jdk 位置是 /usr/java/jdk1.7.0_21。在 ./bin 内部,每个代码都可以正常工作。
  • 我没有碰/root/.bash_profile。我刚刚编辑了 /etc/profile.

感谢您的关注。即使它没有想通。你的帮助对我很有帮助:D 再次感谢。

4

7 回答 7

36

在此处搜索centos jre 安装所有用户:

在 CentOS 中设置环境变量的最简单方法是使用 export,如

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

$> export PATH=$PATH:$JAVA_HOME

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

vim /etc/profile.d/java.sh

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

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

现在,当您重新启动机器时,java.sh 中的环境变量将自动初始化(如果您想知道 /etc/profile.d/ 中的文件是如何加载的,请查看 /etc/profile)。

PS:如果你想在java.sh不重启机器的情况下加载环境变量,你可以使用 source 命令,如下所示:

$> source java.sh
于 2014-05-17T11:39:27.253 回答
7

指示:

  1. 单击桌面面板中的终端图标以打开终端窗口并访问命令提示符。
  2. 键入命令which java以查找 Java 可执行文件的路径。
  3. 键入命令su -以成为 root 用户。
  4. 键入命令以在 Vi 文本编辑器中vi /root/.bash_profile打开系统 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

于 2013-04-29T05:01:10.913 回答
3

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

a!
于 2013-04-29T07:37:22.680 回答
1

看来您对环境变量没有任何问题。

从 src 编译你的文件

javac a/A.java

然后,运行你的程序

java a.A

于 2013-04-29T05:57:42.123 回答
0

我不得不更改 /etc/profile.d/java_env.sh 以指向新路径,然后注销/登录。

于 2013-11-25T21:42:48.403 回答
0

执行以下步骤:

  1. 须藤-s
  2. 百胜安装 java-1.8.0-openjdk-devel
  3. vi .bash_profile ,并将下面的行添加到 .bash_profile 文件中并保存文件。

导出 JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/

注意 - 我使用 CentOS7 作为操作系统。

于 2018-07-06T04:31:58.473 回答
0

提供javac通过 设置/etc/alternatives/javac,您可以添加到您的 .bash_profile:

JAVA_HOME=$(l=$(which javac) ; while : ; do nl=$(readlink ${l}) ; [ "$nl" ] || break ; l=$nl ; done ; echo $(cd $(dirname $l)/.. ; pwd) )
export JAVA_HOME
于 2019-04-02T06:54:24.327 回答