Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 下载一个exe文件并运行_Java_Eclipse_Networking_Exe - Fatal编程技术网

Java 下载一个exe文件并运行

Java 下载一个exe文件并运行,java,eclipse,networking,exe,Java,Eclipse,Networking,Exe,我一直在尝试从网上下载一个.exe文件,读取它,然后在本地将其写入文件,然后执行 URL url = new URL("http://www.ddlands.com/downloads/Calc.exe"); URLConnection c = url.openConnection(); BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream())); String lin

我一直在尝试从网上下载一个.exe文件,读取它,然后在本地将其写入文件,然后执行

URL url = new URL("http://www.ddlands.com/downloads/Calc.exe");
    URLConnection c = url.openConnection();
    BufferedReader br = new BufferedReader(new InputStreamReader(c.getInputStream()));
    String line = "";
    File file = new File("analbread"+".exe");
    BufferedWriter bw = new BufferedWriter(new FileWriter(file));
    while((line = br.readLine()) != null){
        bw.write(line + "\n");
    }
    br.close();
    bw.close();
    Process r = Runtime.getRuntime().exec("analbread" + ".exe");
    System.out.println(r.toString());
    System.out.println("WORKS!");
虽然我知道由于使用了BufferedWriter,这不起作用,而且我不确定它是否运行exe。

请看一下ClickOnce:
我们已经成功地使用了它。

对于下载部分,您需要使用二进制读/写。有关更多详细信息,请参阅此:

对于执行部分,问题是无法启动可执行文件

至少在Linux下(我无法在Windows上测试),您需要可执行文件的完整路径(或者当文件与应用程序位于同一目录下时使用
/[file]
)才能执行它


只有给出命令才适用于系统中的可执行文件。

我使用以下命令运行命令行脚本,效果良好。您可以创建一个运行可执行文件的批处理脚本,或者直接使用exec方法运行它-可能传递“cmd”。这将打开一个命令提示符,从中可以运行任何操作

public static void runScript(String batchFile, boolean waitForExit0, int retryTime)
{
    try
    { 
        String runString = "cmd /c start " + (waitForExit0?"/wait ":"") + "/MIN " + batchFile;
        Process p = Runtime.getRuntime().exec(runString); //   /c start /wait

        while (true)
        {
            try
            {
                int exit = p.exitValue();
                if (exit == 0)
                {
                    System.out.println("completed: " + runString);
                    return;
                }
            }
            catch(Exception e)
            {
                String s = "";
            }

            Thread.sleep(retryTime);
        }
    }
    catch(Exception e)
    {
        String s = "";
    }
}

请澄清你的问题是什么。你为什么不试试呢?你是不是在尝试捕获流程的输出?如果是这样,请使用r.getInputSream()。我想下载一个exe,在本地保存,然后运行它,无需用户交互即可通过java运行。我的代码在测试时无法运行,我无法从服务器获取exe的副本server@CheenarOrangez你有这个工作,如果是,请让我知道。我有类似的要求。