gpt4 book ai didi

java - 运行 jar 文件内的批处理文件

转载 作者:行者123 更新时间:2023-12-01 14:37:32 31 4
gpt4 key购买 nike

我正在尝试从 jar 文件本身调用打包在 jar 文件内的批处理文件。我不完全确定这是可能的,但我想如果有人知道怎么会是这里的人。

import java.io.IOException;
import java.net.URISyntaxException;
public class FileLocationFinder {

public static void main(String[] args) throws IOException, URISyntaxException {
String curdir = System.getProperty("user.dir");
System.out.println("The User.dir = " + curdir);
File newFile = new File (FileLocationFinder.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
String strNewFile = newFile.toString();
System.out.println("The New Path = " + strNewFile);
String abPath = new File(".").getAbsolutePath();
System.out.println("The absolutePath = " + abPath);
String conPath = new File(".").getCanonicalPath();
System.out.println("The Canonical Path = " + conPath);
runDir(strNewFile);
}
public static void runDir(String dir){
final int exitVal;
final Process dirprocess;
try {
System.out.println("Running from curdir");
dirprocess = Runtime.getRuntime().exec(dir + "\\" + "SomeBatch.bat");
try {
exitVal = dirprocess.waitFor();
if(exitVal == 0){
System.out.println("Dir worked");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

SomeBatch.bat的内容是

echo I was called

当我编译然后运行时,它会按照我的预期运行。但是当我创建 jar 文件时,出现了很多错误。

最佳答案

你必须告诉 Java 在哪里寻找你的 .bat 文件,现在它只是在工作目录中搜索“dir\Somebat.bat”。要在 jar 文件中搜索 .bat,您需要利用 ClassLoader 的 getResource 或 getResourceAsStream 方法。然后,您可能必须将 .bat 复制到文件系统 [例如 user.home 目录] 并使用 Runtime.exec() 从那里启动它。

关于java - 运行 jar 文件内的批处理文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343338/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com