How to run .exe file in java
我知道之前有人问过,但这些答案似乎都不适合我。 我试图在java程序中运行.exe文件。 以下代码(我从Internet上获取)有效; 记事本开始。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import java.io.IOException;
public class start {
public static void main (String args [])
{
try {
Process p = Runtime. getRuntime(). exec(new String[] {"C:\\Windows\\System32\
otepad.exe"});
} catch (IOException e ) {
// TODO Auto-generated catch block
e. printStackTrace();
}
}
} |
但是当我将文件夹更改为包含我自己的.exe文件的文件夹时,它不会执行任何操作。 它甚至没有出错。 它刚刚开始和终止。 如果我双击文件夹本身中的文件,它只会打开并运行,因此文件本身可以正常工作。
所以,为了清楚起见,我将Process p更改为
1 2
| Process p = Runtime. getRuntime(). exec(new String[] {"C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe"}); |
为什么这不起作用,我该如何解决?
更新:
所以我不必使用new String [],但这不能解决问题。 此外,使用ProcessBuilder(如答案部分中所说的kage0x3b)给出错误:"The constructor ProcessBuilder(String) is undefined"虽然它显然应该像那样工作:(
-
您可以尝试从命令行运行该文件以确保它有效吗? 按[Windows键] + R,键入"cmd",按Enter键,在cmd窗口中复制exe的完整路径,查看它是否运行或为您提供相关的错误信息
-
它确实给出了一个错误:| 打开模型文件"DetectionModel-v1.5.bin"时出错! FaceAlignment无法初始化。
-
检查是否必须以管理员身份运行它
-
右键单击它然后单击"以管理员身份运行"? 这才有效。 但通常双击也可以。
-
它不起作用。 我仍然得到同样的错误。
-
@ Sharonneke95那么什么是"DetectionModel-v1.5.bin"? 怎么应该被送到这个节目?
如果程序的工作目录尝试从工作目录中加载文件,如果点击这显然有效,可能会出现问题,但是如果你没有设置它,我认为不是从Java代码执行时。
尝试使用ProcessBuilder,然后设置工作目录:
1 2 3 4 5 6 7 8 9 10
| File file = new File("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe");
ProcessBuilder processBuilder = new ProcessBuilder (file. getAbsolutePath());
processBuilder. directory(file. getParentFile());
try {
processBuilder. start();
} catch(IOException ex ) {
ex. printStackTrace();
} |
-
你打败了我。 OP的问题看起来很像stackoverflow.com/questions/6811522/
-
由于此错误,我无法运行它:"构造函数ProcessBuilder(String)未定义"
-
也许你使用的是错误的ProcessBuilder类(它应该是java.lang.ProcessBuilder,因为ΦXoce?Пepepa说。肯定有一个带String参数的构造函数。
-
我显然是在打电话给正确的班级。我将重新启动计算机一次。当其他一切都失败时,这有时会奏效,对吧?哈哈
你不需要只运行一个应用程序的数组...
做就是了:
1 2
| Process p = Runtime. getRuntime(). exec("C:\\Windows\\System32\
otepad.exe"); |
并添加相应的try catch块
使用processBuilder
1 2 3
| ProcessBuilder p = new ProcessBuilder("C:\\Windows\\System32\
otepad.exe");
p.start(); |
-
这似乎没有改变任何东西:(记事本的作品,我自己没有
-
我已经尝试使用我自己的c#app作为.exe并且工作得很好....你执行的是一个有效的文件???你可以通过doubleClicking或在CMD中启动它???
-
双击即可启动。在CMD中它不会:s
-
对于ProcessBuilder-part,我收到此错误:"构造函数ProcessBuilder(String)未定义"
-
邻0?检查ProcessBuilder是否正确... class:java.lang.ProcessBuilder.ProcessBuilder
-
我认同。我导入'java.lang.ProcessBuilder',然后创建对象'ProcessBuilder'。那没关系,对吧?
-
这有点奇怪,java.lang类不需要任何导入...
-
你是对的!我可以删除它,它不会改变任何东西。得知的东西:) Tnx!
谢谢大家的帮助,但不幸的是,你的答案都没有。 我设法找到了能够很好地运行我的代码的东西(根据我的主管的说法),所以我很开心。 这就是我现在正在使用的:
1 2 3
| Runtime. getRuntime(). exec("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\\IntraFaceTracker.exe", null, new File("C:\\Users\\Sharonneke\\Documents\\IntraFace-v1.2\\x64\
elease\")); |
出于某种原因,即使在我像以前一样使用它时也不会这样,但我决定不再提问了。 有用 :)
再次感谢您花时间尝试帮助我!
-
为什么要在代码中创建新的文件目录?
-
我不知道。它工作,所以我很高兴。我在网上找到了其他地方:3
-
好 !我也遇到了同样的问题。不知怎的,我的exe开始工作了。但有时它不是由java代码启动的。