.jar在args中传递有效文件时没有运行

问题描述 投票:1回答:1

我正在构建一个应用程序,它通过XML文件获取输入并基于它执行许多操作。我知道应用程序可以工作,因为我可以直接在代码中为XML提供文件,它将按预期运行。

当我尝试通过打包的.jar的命令行args将路径传递给XML文件时,会出现问题。

我的主要看起来像这样:

    public static void main(String[] args) {
    LogWriter.openWriter();

    LogWriter.log("Main start.");
    Controller controller = new Controller();
    LogWriter.log("Controller created.");

    List<Parameters> parameters = new ArrayList<Parameters>();
    for (int i = 0; i < args.length; i++) {
        LogWriter.log("Got arg: " + args[i]);
        File file = new File(args[i]);
        LogWriter.log("Parameter file: " + file.getAbsolutePath());
        if (file.exists()) {
            LogWriter.log("File exists. Getting parameters.");
            Parameters para = controller.getParameters(file);
            LogWriter.log("Attempting to add parameters.");
            parameters.add(para);
            LogWriter.log("Added parameters.");
        } else {
            LogWriter.log("File is not valid.");
        }
    }
}

我用来运行它的脚本如下所示:

java -jar PDFRedacter.jar C:\Users\je\Downloads\XMLConfig.xml

真正奇怪的是,只有当我给它一个有效的文件时它才会失败。如果我提供了一个无效文件,它会运行,并记录该文件无效,如上所述,如果我直接在代码中输入有效文件,它也会运行。

但是,如果在批处理中写入了有效路径,则甚至不会记录第一个“主启动”,因此代码根本不会运行。这可能是一些访问问题?

编辑:记录器不是我的问题,无论有无有效文件,它都可以正常工作。 “无效文件”日志示例:

主要开始。 控制器创建。 得到了arg:C:\ Users \ je \ Downloads \ XMLConfig 参数文件:C:\ Users \ je \ Downloads \ XMLConfig 文件无效。

澄清一下,问题实际上并不是在阅读文件。问题是,当我通过批处理脚本提供有效文件时,似乎我的代码根本不运行。

最终编辑:事实证明问题只是我的.jar的包装,缺乏依赖性。正如其他人所建议的那样,我的记录器只是在执行结束时才冲洗,这就是为什么它没有写任何东西。感谢您的意见。

java batch-file input jar
1个回答
0
投票

正如托马斯所怀疑的那样,程序必须有另一个失败的原因,因为你的功能应该有效。如果你把它减少到检测一个文件是否存在,一旦你做了shure工作,一个接一个地添加参数列表,控制器和记录器你可能会找到失败的原因。

这是我测试的示例 - 它适用于所有现有文件或目录。

public static void main(String[] args) {
    for (int i = 0; i < args.length; i++) {
        System.out.println("Got arg: " + args[i]);
        File file = new File(args[i]);
        System.out.println("Parameter file: " + file.getAbsolutePath());
        if (file.exists()) {
            System.out.println("File exists. Getting parameters.");
        } else {
            System.out.println("File is not valid.");
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.