【问题标题】:java.io.IOException: Cannot run program ": CreateProcess error=193, %1 is not a valid Win32 applicationjava.io.IOException: 无法运行程序": CreateProcess 错误=193,%1 不是有效的 Win32 应用程序
【发布时间】:2014-08-26 17:05:49
【问题描述】:

尝试在 Eclipse 中从 java 运行 shell 脚本时出现以下错误。

我刚刚在本地创建了一个文本文件,想看看它是否会运行。

new ProcessBuilder("C:/Users/myDir/Desktop/ss1.sh").start();

【问题讨论】:

    标签: java shell


    【解决方案1】:

    您不能直接在 Windows 上运行 shell 脚本,因为它在 Windows 意义上不是可执行文件(只有 .exe.com.cmd.bat 是可执行文件)。

    调用bash.exesh.exe 并使用您的脚本作为第一个参数。

    【讨论】:

    • 那是什么样的?
    • new ProcessBuilder("path-to-bash/bash.exe C:/Users/myDir/Desktop/ss1.sh").start();new ProcessBuilder("path-to-bash/bash.exe -c C:/Users/myDir/Desktop/ss1.sh").start();
    • 感谢您消除了错误,但没有任何反应。如果我直接通过 cygwin 运行脚本运行
    【解决方案2】:

    在 MrTux 评论之后,我将我从 groovy 调用的 py 脚本包装在一个 bat 文件中,瞧!它可以工作了。

    直接从groovy调用py脚本

    def proc = "C:\\MyDir\\myScript.py param1 param2 param3".execute()
    proc.waitFor()
    def result = proc.in.text
    def error = proc.err.text
    

    失败了

    将 py 脚本封装在 bat 文件中 def proc = "C:\MyDir\myScriptWrapper.bat param1 param2 param3".execute()

    作品

    想知道为什么 Windows 中的这种行为没有得到更好的记录。非常感谢 MrTux

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 2017-03-16
      • 1970-01-01
      • 2012-09-20
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多