当前位置: 首页 > 知识库问答 >
问题:

无法从shell脚本执行java类

谭志用
2023-03-14

我有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版本,但都出现了相同的错误

共有1个答案

范翰飞
2023-03-14
  • JAVA\u主页不是绝对路径。这是坏的;当您这样做时,许多工具都会失败。让它成为一条绝对路径。这也许可以解释你的错误,也可能无法解释,但这是一颗定时炸弹
  • JAVA\u HOME不能是bin;它位于垃圾桶上方

看起来您正在使用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可执行文件,例如cding到路径并运行。/java-version。看看会发生什么。如果这也让你无法执行,瞧——脚本不是问题(尽管它仍然有一个损坏的JAVA_HOME你应该修复),你需要安装一个适用于你的操作系统架构的JVM。

  •  类似资料:
    • 我在尝试编译 eXo 平台时遇到麻烦。 错误消息是: < code >原因:java.io.IOException:无法运行程序“/exo/platform-public-distributions-develop/PLF-community-Tomcat-standalone/target/platform-community-5.0 . x-SNAPSHOT/platform-communit

    • 问题内容: 我想从PHP脚本执行系统上存在的Bash脚本。我的系统上有两个脚本。其中一个是称为at at 的PHP脚本,另一个是称为at at 的Bash脚本。 我的client.php脚本看起来像 我的睾丸看起来像 当我在终端上执行以下操作时 我在终端上得到以下输出 但是当我在打开页面时 我得到以下输出 即使执行了chmod + x testscript,我仍然收到此错误。 我如何从浏览器中获取

    • 我有一个shell脚本,它执行sql构建工作。 当从unix提示符手动调用它时,它正在执行并按预期给出结果。 但是当它从java调用时,它并没有完全执行。 手动执行: MODIFY_PATCH_CREATION. ksh 118765CP_14052906_28112015134449_16 日志文件显示为: 但是如果我从java程序执行相同的操作,如下所示: Java代码: 当作为java Sh

    • 问题内容: 我尝试谷歌搜索答案,但没有运气。 我需要使用我的超级计算机服务器,但是要运行我的python脚本,必须通过shell脚本执行。 例如我要执行 如何做到这一点? 问题答案: 只需确保python可执行文件在PATH环境变量中,然后在脚本中添加 细节: 在文件job.sh中,放入 执行此命令以使脚本可运行: 运行 :

    • 本文向大家介绍Android 从Gradle执行Shell脚本,包括了Android 从Gradle执行Shell脚本的使用技巧和注意事项,需要的朋友参考一下 示例 Shell脚本是一种非常通用的方法,可以将您的构建扩展到您能想到的任何东西。 例如,这是一个简单的脚本,用于编译protobuf文件并将结果java文件添加到源目录中以进行进一步编译: 此示例的“ pbScript.sh” shell

    • 问题内容: 我有一个读取输入的Shell脚本 我正在使用JAVA APi执行此Shell脚本 在Java控制台中,我可以看到输出 键入要检查的年份(4位数字),然后按[ENTER]: 现在,如何将值传递到我脚本中的Shell脚本中的实际问题是如何读取变量“ year” 我已经按照建议编辑了代码,但在我们更正的地方无法正常工作 问题答案: 要将执行脚本的Java程序中的值传递给脚本,请使用命令行参数