在Windows 7上运行Bash(.sh)

3
这是一个GUI Java应用程序,我有一个run.sh文件,想在Windows 7(x64)上运行它,该怎么办?
该文件包含以下内容:
#!/bin/bash

java -Xmx2048m -classpath ./lib/*: com.jweb2.JWMainWindow  &> out.txt

我从Java下载并安装了JDK、JRE以及Cygwin(http://www.cygwin.com/),但仍未解决问题。请问有谁知道如何解决?

5
为什么不直接编写一个等效的批处理脚本呢? - user395760
你所说的“没有帮助”是什么意思?这仅提供了很少的信息来诊断问题。但我同意,批处理文件有什么问题吗? - Dave Newton
1个回答

4

这只是一个Java命令。将其转换为Windows批处理(.bat)文件。

run.bat文件应包含以下内容。

SET CPATH=""
FOR /F %%r in (.\lib\*) DO SET CPATH="%CPATH;%%r"
java -Xmx2048m -classpath %CPATH com.jweb2.JWMainWindow  > out.txt 2>&1

如果你的java命令在%PATH%中,它应该可以工作。

我现在无法访问Windows机器。因此可能会有错误。


你确定 java 命令在 classpath 参数中支持通配符吗? - user330315
@a_horse_with_no_name 如果 run.sh 支持,为什么不支持 run.bat 呢?你能解释一下你的疑惑吗? - Shiplu Mokaddim
3
在将命令行参数传递给可执行文件之前,Shiplu Bash会将扩展为匹配的模式。DOS shell好像会直接传入并期望可执行文件处理扩展。我猜这就是horse提出问题的原因。 - RHSeeger
@RHSeeger:正确。Windows不会扩展通配符。我非常怀疑批处理文件是否能正常工作。 - user330315
2
在这种情况下,由于它是最后一个字符,所以并不重要,但是在Windows中类路径分隔符是分号,而不是像\lib\*:中的冒号。 - Kennet
那行不通 - 你需要调用cmd /v并使用!CPATH!,并且在for命令中去掉/F,除非你打算在括号内使用一个命令。 - Anya Shenanigans

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接