java - 为什么我的程序在 eclipse 中可以运行,但在使用 maven 进行 jar 时会生成 "filename, directory name, or volume label syntax is incorrect"错误?

标签 java file-io maven jar filesystems

我编写了一个类(称为 LogCopy),当我在 Eclipse 中使用 4 个参数运行它时,它应该以正确的格式运行,令人惊讶的是,它运行得非常好。问题是,我需要将其 .jar 到实时系统上,这就是它变得奇怪的地方。参数是 2 个日期时间戳和 2 个文件名。它是在 Windows 系统上开发和执行的,因此我提供的用于测试的参数是:

2011-03-20|10:21:20 2011-03-20|10:21:21 F:\somepath\logfile.txt F:\somepath\logfileoutput.txt

现在,将它们放入 Eclipse 中的运行配置中即可获得所需的响应。如果我删除一个参数或输入一个不是有效日期、可读输入文件或锁定输出文件的值,它会像我设置的那样抛出异常,一切都很好。但是当我使用 Maven 将其打包,并使用 4 个参数运行它时,我得到了神秘的

The filename, directory name, or volume label syntax is incorrect

奇怪的是,当我故意弄乱参数时,我仍然收到预期的错误消息,所以

java -jar LogCopy-0.0.1-SNAPSHOT-jar-with-dependencies.jar parm1 parm2 parm3 parm4 

获取关于参数的每个错误的错误日志条目 - 日期不是有效日期,文件名不是指可以使用的文件,以及命令语法的一些细节,以便用户可以更正他们输入的内容。

为什么有效的文件名会给出这个奇怪的错误消息?我尝试过使用正斜杠、反斜杠、转义反斜杠等各种格式输入文件名,但它们都给出相同的(非我编程的)错误消息。给出了什么?

最佳答案

我对此表示怀疑 - 你们都会认为我对此完全是个菜鸟,你们是对的。其中之一“D'OH!!”时刻。事实证明,参数只有在作为双引号中的字符串传入时才能正常工作,因此:

java -jar LogCopy.jar "2011-05-04|10:05:23" "2011-05-04|10:05:26" "C:\dir\fromfile.txt" "C:\dir2\tofile.txt"

可以工作,但如果没有双引号,Java 会错误解析参数并且似乎将日期的一部分作为文件名。

关于java - 为什么我的程序在 eclipse 中可以运行,但在使用 maven 进行 jar 时会生成 "filename, directory name, or volume label syntax is incorrect"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5634288/

相关文章:

java - Jackson objectMapper,尝试将 LocalDate 序列化为 "yyyy-MM-dd",将 LocalTime 序列化为 "HH:mm:ss"

java - 如何停止最小化、滚动 Pane 、调整大小对我所有 jtable 的着色

file-io - 从文件加载图像并设置到 UnityEngine.UI.Image Unity

c# - File.CreateText - 拒绝访问

java - findbugs-maven-plugin 什么都不做

java - 使用 VBox JavaFX-8 内的过滤器参数过滤 TableView

java - 子类需要有构造函数吗?

maven - Maven Web 项目中 JSP、JavaScript、CSS、图像的常规位置是什么?

c - 如何从预读()中释放内存?

java - 当 pitest 找不到测试类时