Java 为什么我的程序在eclipse中工作,但会生成一个;文件名、目录名或卷标语法不正确;与maven发生冲突时出错?

Java 为什么我的程序在eclipse中工作,但会生成一个;文件名、目录名或卷标语法不正确;与maven发生冲突时出错?,java,file-io,maven,jar,filesystems,Java,File Io,Maven,Jar,Filesystems,我编写了一个类(称为LogCopy),当我在Eclipse中使用它应该具有的4个参数以正确的格式运行它时,惊奇,惊奇,运行得非常好。问题是,我需要把它装进一个活的系统&这就是它变得古怪的地方。参数是2个日期时间戳和2个文件名。它是在Windows系统上开发和执行的,因此我提供的测试参数是: 2011-03-20 | 10:21:20 2011-03-20 | 10:21:21 F:\somepath\logfile.txt F:\somepath\logfileoutput.txt 现在,将它们

我编写了一个类(称为LogCopy),当我在Eclipse中使用它应该具有的4个参数以正确的格式运行它时,惊奇,惊奇,运行得非常好。问题是,我需要把它装进一个活的系统&这就是它变得古怪的地方。参数是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个参数运行它时,我得到了一个神秘的结果

文件名、目录名或卷标语法不正确

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

java -jar LogCopy-0.0.1-SNAPSHOT-jar-with-dependencies.jar parm1 parm2 parm3 parm4 
为参数的每一个错误获取一个错误日志条目-日期不是有效日期,文件名没有引用可以使用的文件,以及命令语法的一点精确性,以便用户可以更正他们输入的内容


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

我用过了-&你们都会认为我是个彻头彻尾的傻瓜&你们是对的。一个“哦!!”的时刻。结果表明,只有在以双引号作为字符串传入时,PARM才能正常工作,因此:

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会错误地解析参数并将部分日期作为文件名。

您要部署到的操作系统是什么?您知道错误消息来自何处吗?您是否从某处抛出异常?(您是否正在丢弃代码中的任何异常?)您是如何执行上面的命令的-从命令提示符窗口,对吗?Robin-问题是:当我对文件名进行验证时,如果它捕获了一个问题,那么它会抛出一个IOException,其中包含一条关于错误的自定义消息——输入文件的文件名不是现有文件,或者该文件不可读或诸如此类;输出文件已存在并已锁定,因此不可写。在类的顶层,它会捕获这些异常以及与日期有关的任何异常,并打印出一条错误消息,详细说明出错的所有内容。我不认为有任何地方我没有捕捉到抛出的异常。那么,您知道错误消息来自哪里吗?这是一个特殊的例外吗?这个异常的堆栈跟踪是什么,如果是的话?Robin,还没有到目前为止-问题是它只在我从.jar调用类时发生,而不是在Eclipse中发生,所以调试它是正确的PITA。没有堆栈跟踪,只有单行错误消息。我明天再试试看。