ARM Linux部署Java SE Embedded遇java:not found问题求助
java -version提示"java: not found"的问题 我来帮你一步步排查这个问题,大概率是这几个原因之一,咱们逐个验证:
先确认执行方式是否正确:你虽然进入了JRE的
bin目录,但直接敲java -version时,系统会优先在PATH环境变量配置的路径里找java命令,当前目录大概率不在PATH里。试试直接执行./java -version(加上当前目录的前缀./),看能不能正常输出版本信息。排查共享库依赖(这也是你怀疑的点):如果上面的方法没用,那很可能是缺少JRE依赖的系统共享库。在
bin目录下执行ldd ./java,这个命令会列出java程序需要的所有系统共享库。如果输出里出现not found的条目,那就是对应的库缺失了。比如常见的基础依赖如libc.so.6、libz.so.1,你需要根据ARM Linux的发行版安装对应包:- Debian/Ubuntu系:用
apt-get install libc6 libz1 - CentOS/RHEL系:用
yum install glibc zlib
- Debian/Ubuntu系:用
确认JRE架构是否匹配:有可能你用Jrecreate生成的JRE架构和你的ARM设备不匹配(比如误生成了x86版本但设备是ARM64)。执行
file ./java,查看输出的架构信息,正常应该是类似ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV)或者ELF 64-bit LSB executable, aarch64, version 1 (SYSV)的内容,如果显示x86相关架构,就需要重新用Jrecreate生成对应ARM架构的JRE。检查文件执行权限:最后看看
java文件有没有执行权限,执行ls -l ./java,如果权限列里没有x(比如显示-rw-r--r--),就用chmod +x ./java给它加上执行权限,再重试命令。
内容的提问来源于stack exchange,提问作者X.Huang

