[Error: /usr/bin/java: No such file or directory]

描述:在Hadoop运行Job的时候,可能会报这样的一个错误“/bin/bash: /bin/java: No such file or directory”,那是可能有些地方用到了/usr/bin/java 这个路径,而这个路径是指向Java JDK的一个指向,相当于快捷方式,而/bin下面并不存在这个指向;

解决方法:手动创建一个指向(建立软连接)、修改halo.service配置文件使用绝对路径

比如我在部署halo时,他的官方halo.service模板(服务器重启,此服务也重启)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[Unit]
Description=Halo Service
Documentation=https://halo.run
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=USER
ExecStart=/usr/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=always
StandOutput=syslog

StandError=inherit

[Install]
WantedBy=multi-user.target
请确保 /usr/bin/java 是正确无误的。建议将 ExecStart 中的命令复制出来运行一下,保证命令有效。

我在本机已经安装了jdk ,并且配置了环境变量,可还是无法启动 ,看这报错信息似乎是找不到java,于是猜想在上述配置文件中,可能指定了默认的jdk位置。两种解决办法:

方式一:修改halo.service配置文件。

如下,直接指定本机jdk的位置,注意:指定到 bin目录的java,ExecStart=/usr/local/jdk17.0.2/bin/java -server -Xms256m -Xmx256m -jar YOUR_JAR_PATH
修改完后记得
1
2
3
4
5
6
7
8
//重新加载 systemd
systemctl daemon-reload
//运行服务
systemctl start halo
//在系统启动时启动服务
systemctl enable halo
//查看服务日志检查启动状态
journalctl -n 20 -u halo

方式二: 建立软连接

1
ln -s /usr/local/jdk17.0.2/bin/java /usr/bin/java