Почему моя программа работает в eclipse, но выдает ошибку «имя файла, имя каталога или синтаксис метки тома неверны» при использовании javar с maven? - PullRequest
1 голос
/ 12 апреля 2011

У меня есть класс (называемый LogCopy), который я написал, и когда я запускаю его в Eclipse с четырьмя параметрами, которые он должен иметь в правильном формате, удивление, удивление, он работает отлично.Беда в том, что мне нужно взломать его, чтобы установить на живую систему, и вот тут все и получается.Параметрами являются 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 

получает запись в журнале ошибок для каждой вещи, которая неправильнао параметрах - то, что даты не являются действительными датами, имена файлов не относятся к файлам, которые можно использовать, и небольшая точность синтаксиса команды, чтобы пользователь мог исправить введенные данные.

Почему действительные имена файлов дают это странное сообщение об ошибке?Я пытался вводить имена файлов в различных форматах, используя прямые, обратные слэши, экранированные обратные слэши, все виды, но все они выдают одно и то же (не запрограммированное мной) сообщение об ошибке.Что дает?

1 Ответ

0 голосов
/ 10 мая 2011

Я подозревал это - и вы все будете думать, что я был полным нубом по этому поводу, и вы были бы правы.Один из тех "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 неправильно анализирует параметры и, по-видимому, принимает часть даты какимя файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...