- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
大家。我是新来的,所以如果我犯了任何错误,请多多包涵。
我有一个 .bat 文件,其中包含一个命令行,用于打开一个 .jar 文件,该文件包含一个带有 GUI 的程序。 .bat 文件中唯一的一行是:
java -jar "NewServer.jar"
我一直在尝试使用 Runtime() 来让它运行,但我发现在 java 程序中打开 .bat 文件的大多数指令都是针对 Windows 的。我目前正在使用 Fedora 12(不要告诉我升级,我不能)如果这会有所作为并使用 Eclipse 进行编程。我也发现了这个 ProcessBuilder 东西,但我无法让它工作,所以除非你有关于如何使用它的非常明确的说明,否则请不要将它包含在你的答案中。我宁愿使用运行时。它看起来更简单。
这是我在 Java 程序中使用运行时进行测试的代码。我希望如果我能让它工作,我就能让它在我的真实程序中工作。
import java.io.IOException;
public class testbat {
public static void main(String[] args) {
Process proc = null;
try {
proc = Runtime.getRuntime().exec("./ myServer.bat");
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("Cool");
}
最后一行是为了让我在 GUI 未打开的情况下查看程序是否实际运行。此外,我已经尝试过许多东西的组合以包含在“.exec”之后的区域中。我试过使用像“~/user/workspace/ProjectServer/dist/myServer.bat”这样的路径,但无济于事。
我也已经知道 .bat 文件适用于 windows,但我可以在 linux 中执行它,所以我不知道这是否会有所不同。我也尝试以同样的方式使用 .sh 文件,但没有成功。
请记住,我不是很擅长 Java,但我必须将它用于这个特定的程序,所以如果你的答案真的是描述性的,那就太棒了。
最佳答案
只需从 bat 文件中取出该行,然后运行它。你太难了。
$ java -jar "NewServer.jar"
会起作用。引号不是必需的,所以
$ java -jar NewServer.jar
也会起作用。如果您想拥有与您的 bat 文件等效的文件,请创建一个名为 run_newserver
的文件,其中包含该行。将其模式更改为可执行:
$ cat > run_newserver
java -jar NewServer.jar
^D
$ chmod a+x run_newserver
$ ./run_newserver
理想情况下,因为您不应该有没有评论的脚本,所以这样做。在您最喜欢的编辑器中,创建一个包含 run_newserver 的文件
#!/usr/bin/env bash
java -jar NewServer.jar
和chmod
那个。带有 #!
的行——通常称为“shebang 行”——是 UNIX 的魔法,它可以让你说出你想要的解释器。 usr/bin
中的程序 env
找到您的程序并运行它(需要,因为不同的系统将 bash
放在不同的目录中。)
您也可以甚至在文件中添加解释性注释。
我有点不清楚您为什么要使用 Runtime#exec 来运行它——看来您只需要一个 shell 脚本来启动那个程序。
关于java - 如何在 Linux 的 java 程序中打开包含 GUI 的 .bat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8195330/
我是一名优秀的程序员,十分优秀!