我刚接触Linux系统,似乎有太多的Java文件夹。

Java -version给我:

Java版本“1.7.0_55” OpenJDK运行时环境(rhel-2.4.7.1。el6_5-x86_64 u55-b13) OpenJDK 64位服务器虚拟机(build 24.51-b03,混合模式)

当我试图构建一个Maven项目时,我得到了错误:

Error: JAVA_HOME is not defined correctly.
We cannot execute /usr/java/jdk1.7.0_05/bin/java

请问root用户和非root用户需要修改哪些文件,java到底在哪里?


当前回答

对于所有用户,我建议在/etc/profile.d/java_home.sh中按以下行创建一个文件

# Set JDK installation directory according to selected Java compiler

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

这将动态更新,并与替代系统一起很好地工作。不过请注意,更新只会发生在新的登录shell中。

其他回答

做甲骨文所做的事情(作为前Sun员工,我不习惯这种做法)

ln -s latestJavaRelease /usr/java/default latestJavaRelease是您想要使用的版本

export JAVA_HOME=/usr/java/default

对于所有用户,我建议在/etc/profile.d/java_home.sh中按以下行创建一个文件

# Set JDK installation directory according to selected Java compiler

export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")

这将动态更新,并与替代系统一起很好地工作。不过请注意,更新只会发生在新的登录shell中。

用sudo打开kafka-run-class.sh进行写入

你可以在kafka文件夹中找到kafka-run-class.sh: kafka/bin/kafka-run-class.sh

检查这些行

修改else部分中的JAVA变量,使其指向JAVA /bin中的JAVA可执行文件。像JAVA = " $ JAVA_HOME / JAVA "

在Linux上,我在~/.profile中添加了这一行:

export JAVA_HOME=$(readlink -ze /usr/bin/javac | xargs -0 dirname -z | xargs -0 dirname)

在/etc/profile中,如果你打开这个文件,你会知道不建议在这个文件上写东西。与其这样做,不如把你的命令脚本(假设test.sh)放到/etc/profile.然后把test.sh放在那里。每次实例重新启动时,/etc/profile都会自动调用它