Java-执行外部Windows应用程序?
我不确定如何通过Java代码启动外部应用程序(特别是在Windows上)。我不打算在Mac/Linux上使用这段Java代码,所以让我们把重点放在Windows代码上 我所做的 过去两天我一直在研究这个问题,但仍然没有找到答案。我很容易找到Java-执行外部Windows应用程序?,java,windows,batch-file,intellij-idea,executable,Java,Windows,Batch File,Intellij Idea,Executable,我不确定如何通过Java代码启动外部应用程序(特别是在Windows上)。我不打算在Mac/Linux上使用这段Java代码,所以让我们把重点放在Windows代码上 我所做的 过去两天我一直在研究这个问题,但仍然没有找到答案。我很容易找到Runtime.getRuntime().exec()方法,但问题是我在IntelliJ Idea的本地工作区中找不到有关启动批处理(.bat)文件的信息 我在问什么 我只想知道如何在我的工作区中执行本地批处理文件(在com.example.Batch这样的文
Runtime.getRuntime().exec()
方法,但问题是我在IntelliJ Idea的本地工作区中找不到有关启动批处理(.bat)文件的信息
我在问什么
我只想知道如何在我的工作区中执行本地批处理文件(在com.example.Batch
这样的文件夹中)和/或如何使用直接文件地址执行(.exe)或(.bat)。(例如,Windows的碎片整理和优化驱动器(.exe):C:\Windows\system32\dfrgui.exe
)
多亏了前面的一切,我一直渴望得到这个答案。首先,您应该使用
ProcessBuilder
执行外部程序,以获得比Runtime.getRuntime().exec()更易于使用的界面。
其次,要执行
.bat
文件,只需执行cmd.exe
并在/C
选项中传递批处理文件名。请注意,当您运行批处理文件时,您正在启动DOS cmd处理器,并告诉它运行批处理文件,而不是从终端读取。因此,批处理文件必须位于cmd.exe
可以访问的位置。因此,它不能位于包含Java程序的jar文件中。如果有必要在jar中分发它,那么您必须将它复制到某个文件系统中。您阅读了essential吗
本文第2页列出了一个常见的陷阱:Runtime.exec()不是命令行
.bat文件不是可执行文件。它们是指令的集合。就像Linux中的shell脚本一样,您需要一些东西来实际执行这些指令
本例中的可执行文件是cmd.exe
,它将以/C
和com.example.batch
作为参数:
Runtime.getRuntime().exec(new String[] { "cmd.exe", "/C", "com.example.batch"});
作为旁注,请查看
ProcessBuilder
类。它比运行时
好得多。是的,运行时
文章中的所有规则都适用于ProcessBuilder
您是否尝试过类似的答案?(关于第二个选项)这是否允许我从项目工作区启动.bat?回答很好。我选择它是因为你专注于一个你给出了完整细节的主题。谢谢