我编写了一个类(称为 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/