2012-03-09 57 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