zeppelin..
8
更新
我已从您的错误消息解码ELF标头: ^?ELF^A^A^A^B^C^A
它是一组插入符号编码的控制字符,可以解码如下:
前4个字节是幻数,将文件标识为ELF可执行文件.
0x7f (^?) - ELFMAG0
0x45 (E) - ELFMAG1
0x4c (L) - ELFMAG2
0x46 (F) - ELFMAG3
接下来的3个字节指定体系结构,字节顺序和ELF格式版本:
0x01 (^A) - ELFCLASS32 (i.e. this is a 32 bit binary)
0x01 (^A) - ELFDATA2LSB (Little Endian)
0x01 (^A) - EI_VERSION (Version of ELF format EV_CURRENT/1)
所以基本上它是一个32位的 Java二进制文件.
然后,我已经下载了32位版本的JRE(jre1.8.0_121),并试图用破折号运行java,以确认我的shell问题理论(下面),它确实产生了完全相同的错误消息:
%dash ./java|&less
./java: 1: ./java: ^?ELF^A^A^A^B^C^A: not found
./java: 2: ./java: Syntax error: "(" unexpected
因此,最有可能的是,您在一台机器上使用32位版本的Java(与Tomcat捆绑在一起),该机器无法(或配置)运行32位可执行文件.然后shell问题(如下所述)掩盖了潜在的问题,这就是为什么你会得到这个奇怪的错误信息.
如果没有关于你的系统的更多细节,很难说更多,所以输出uname -a和cat /etc/lsb-release将是很好的.
...
我敢打赌,这可能是一个shell问题,即你/bin/sh指向像dash这样的东西,这可能会导致与catalina.sh脚本的一些兼容性问题,并使其解释bin/java为脚本,而不是在某些情况下将其作为可执行文件运行.
还有你的错误信息
/home/tomcat/jdk1.8.0_121/bin/java: 2: /home/tomcat/jdk1.8.0_121/bin/java: Syntax error: "(" unexpected
看起来非常喜欢它.
您可以查看您的/bin/sh要点,例如:
>ls -l /bin/sh
/bin/sh -> bash
如果它不是bash,那么修改/home/tomcat/apache-tomcat-8.5.11/bin/catalina.sh中的shebang行,如下所示:
#!/bin/bash
并查看它是否有帮助,或者至少产生更易读的错误消息.
如果bash失败cannot execute binary file,请检查您的java二进制文件是否已损坏并且可以在您的系统上执行,方法是手动运行:
/home/tomcat/jdk1.8.0_121/bin/java