执行jar/exe/etc的Java代码

标签 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 时,对于其他任何文件(如 .jar)它不起作用。 我需要更改什么才能使其与所有扩展一起工作?

最佳答案

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

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

关于执行jar/exe/etc的Java代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629585/

相关文章:

python - 使用python从url下载多个压缩文件

java - 如何为 JDI 启动连接器指定类路径;使用 Eclipse?

Java- Action 监听器检查两个按钮是否被按下

java - 如何使用 Apache httpclient 获取自定义 Content-Disposition 行?

java - 在 Jar 文件中加载类并获取其路径

android:检测应用程序是否从市场下载

javascript - 出生日期: Same date of birth in every local?

java - 运行 java -jar 时包含外部 jar

java - 使用 java -jar 命令执行 jar 文件失败

java - 在 Java 中监控 GZip 下载进度