JAVA_HOME 应该指向 JDK 而不是 JRE + JAVA_HOME 未正确定义

标签 java linux spring spring-boot ubuntu

我编辑了我的 .bashrc我的服务器上的文件,带有 sudo nano ~/.bashrc

export JAVA_HOME=/usr/bin/java
export PATH=${PATH}:${JAVA_HOME}/bin
我已经重新登录,这里是输出的所有路径:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# echo $JAVA_HOME
/usr/bin/java
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/bin/java/bin
但是当我尝试运行我的 Spring Boot 服务器时,它给了我:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# ./mvnw spring-boot:run
Error: JAVA_HOME is not defined correctly.
  We cannot execute /usr/bin/java/bin/java
当我尝试做 mvn install ,我得到:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# mvn install
The JAVA_HOME environment variable is not defined correctly
This environment variable is needed to run this program
NB: JAVA_HOME should point to a JDK not a JRE
但这里是java配置列表:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# sudo update-alternatives --list java
/usr/lib/jvm/java-11-openjdk-amd64/bin/java
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
当我尝试运行时(只是尝试过,没有安装依赖项),我得到:
root@ubuntu-s-1vcpu-1gb-blr1-01:~/maifee/backend-spring# ./mvnw spring-boot:run
Error: JAVA_HOME is not defined correctly.
  We cannot execute /usr/bin/java/bin/java
如何设置我的环境以正确运行我的 Spring Boot 服务器?我直接在那里有源代码,我什至不需要编译和东西。

最佳答案

JAVA_HOME指向java的基本安装目录:/usr/lib/jvm/java-11-openjdk-amd64/不是 /usr/bin/java这可能是到 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 的符号链接(symbolic link)
然后在 PATH您附加的变量 $JAVA_HOME/bin所以它应该看起来像这样:

JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
PATH=$JAVA_HOME/bin:$PATH
仅供引用 update-alternatives 仅负责更改 java 的符号链接(symbolic link)以将其指向不同版本的可执行文件,
把它想象成一个简单的ln -s /usr/lib/jvm/java-11-openjdk-amd64/bin/java /usr/bin/java

关于JAVA_HOME 应该指向 JDK 而不是 JRE + JAVA_HOME 未正确定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68243485/

相关文章:

java - 仅键入接口(interface)方法

java - AutoCompleteTextView 背景/前景色

linux - 如何在 linux 上找到所有基本上是其他目录或文件的软链接(soft link)或硬链接(hard link)的文件?

linux - i.MX25 上的 BlueZ : Can't connect RFCOMM socket: Operation now in progress

spring - 启用 AOP 会破坏我对采用字符串的工厂 bean 的依赖注入(inject)

java - 计时器简历?

java - Android Button 在 Activity 中找不到方法

linux - Perl代码执行顺序

java - 这是 dtos 中构建器模式的正确用法吗?

java - ApplicationScope 类每次 Jersey 2.0 都会创建新实例