我有SunOs 5.10 unix服务器,在那里我编写了一个脚本来执行java文件,如下所示
#!/bin/ksh -x
export JAVA_HOME=openjdk1.8.0_331/bin
$JAVA_HOME/java com.myclass.MyClient
在这个脚本中,有很多代码,其中包括日志文件,以及在导出JAVA HOME之前添加的其他二进制文件类路径。但当我执行时,我得到以下错误
openjdk1.8.0_331/bin/java : Cannot execute
我更改了很多java版本,但都出现了相同的错误
看起来您正在使用JAVA\u HOME作为一个ersatz脚本变量,以使脚本工作,但这是错误的:JAVA\u HOME被各种工具使用,并具有非常特定的含义,它不是您所认为的那样。
您的错误有两种明显的解释:
>
一些工具看到JAVA\u主页,试图基于此运行JAVA,但失败了,因为JAVA\u主页坏了。每个操作系统都有大量的“自定义”infra,如果您将JAVA\u HOME设置为断开的值,那么SunOS设置可能不会失败,但在这里它确实失败了。修复方法是不要破坏JAVA\u主页,不要开始在新操作系统上寻找可以处理破坏的JAVA\u主页设置的设置。换句话说,您的脚本总是被破坏,只是碰巧您在特定版本的sun OS上的特定服务器上的特定设置能够处理混乱。
一个更简单的解释也是可能的:该可执行文件不在您的操作系统架构组合上运行。简单可测试:根本不要设置JAVA_HOME
,只需尝试运行该java可执行文件,例如cd
ing到路径并运行。/java-version
。看看会发生什么。如果这也让你无法执行
,瞧——脚本不是问题(尽管它仍然有一个损坏的JAVA_HOME你应该修复),你需要安装一个适用于你的操作系统架构的JVM。