Java 将批处理文件打包到jar文件中

Java 将批处理文件打包到jar文件中,java,batch-file,jar,Java,Batch File,Jar,我想知道是否可以将批处理文件与java应用程序一起“打包”(作为单个jar)。我的应用程序执行一个批处理文件,因此硬编码我必须编写批处理文件的路径。我担心的是,我希望可以调用批处理文件,而无需更改部署应用程序的每台机器的路径。。。。使用Eclipse作为IDE 这是我的代码,它工作得很好,但正如我所说的,我希望将批处理文件作为一个普通的java类导入调用 public class LogFileScanner { private final String dir

我想知道是否可以将批处理文件与java应用程序一起“打包”(作为单个jar)。我的应用程序执行一个批处理文件,因此硬编码我必须编写批处理文件的路径。我担心的是,我希望可以调用批处理文件,而无需更改部署应用程序的每台机器的路径。。。。使用Eclipse作为IDE

这是我的代码,它工作得很好,但正如我所说的,我希望将批处理文件作为一个普通的java类导入调用

public class LogFileScanner 
{
                private final String dir_of_log = "<My Directory>";
                private final String dir_of_batch = "<My Directory>\\Java_Tools";
                private final int toGigaByte = (1024*1024)*1024;
                private double size_in_GIGA;
                private String cur;
        .
        .
        .

    try
    {
        Runtime.getRuntime().exec("cmd /c start DailyAuto2.bat", null, getBatchFile());
    }
        .
        .
        .

    private File getBatchFile()
    {
            File batchFile = new File(dir_of_batch);
            return batchFile;
    }
}

将批处理文件放在源代码树中的某个位置,使其成为.jar中包含的“资源”。那么

  • 使用
    java.lang.Class.getResourceAsStream(String)
    获取内容或
  • 使用
    java.lang.Class.getResource(String)
    获取URL,然后在

是的,这是可能的,但您必须先从jar中提取批处理文件,然后才能运行itSee
private File getBatchFile()
{
    dir = LogFileScanner.class.getResource("DailyAuto2.bat").toString();
    dir = dir.replace("/", "\\\\");
    dir = dir.substring(7, dir.length()-16);
    File batchFile = new File(dir);
    return batchFile;
}