为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开心每一天1111 2021-09-12 20:19:37
我正在构建一个应用程序,它通过 XML 文件获取输入并基于它执行许多操作。我知道该应用程序有效,因为我可以直接在代码中为 XML 提供一个文件,并且它会按原样运行。当我尝试通过打包的 .jar 的命令行参数将路径传递到 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 的包装,缺乏依赖。正如其他人所建议的那样,我的记录器只是在执行结束时才刷新,这就是为什么它没有写任何内容的原因。感谢您的意见。
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

正如托马斯怀疑的那样,程序失败肯定有另一个原因,因为您的函数应该可以工作。如果您将其简化为检测文件是否存在,并且一旦您使其正常工作,请一个接一个地添加参数列表、控制器和记录器,您可能会找到失败的原因。´


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


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.");

        }

    }

}


查看完整回答
反对 回复 2021-09-12
  • 1 回答
  • 0 关注
  • 136 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信