2012-03-09 50 views
0

好了,我有这样的一套代码Java代码来执行JAR/EXE /等

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)它不起作用。 我需要更改哪些内容才能与最好所有扩展一起使用?

+0

只是一个建议的执行行为,改变你的args'的'初始化为'字串[] args = message.split(” \\ s +“);'在参数 – Alex 2012-03-09 06:11:45

回答

2

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

您将需要显式地指定非标准的文件类型(可执行文件或批处理文件)

+0

之间提供一个或多个空格,非常感谢,非常有帮助:D – Epicblood 2012-03-09 06:04:50

+2

然后请将它标记为选定的答案 – RandomQuestion 2012-03-09 06:13:16