2016-09-24 2 views
0
build> jar cvfe test\MyJavaLibrary.jar Main -C test\java Main.class foo\SomeClass.class 
foo\SomeClass.class : no such file or directory 
added manifest 
adding: Main.class(in = 444) (out= 308)(deflated 30%) 

Соответствующая структура каталоговСоздать команду банку не найти файл

build/ 
    test/ 
    java/ 
     foo/ 
     SomeClass.class 
     Main.class 

Это очень странно, что он работает правильно при использовании test\java\foo\SomeClass.class в качестве последнего аргумента вместо этого. Отлично, но это не работает, когда я делаю то же самое для первого аргумента, то есть test\java\Main.class. Поведение выглядит очень непоследовательным.

Почему он не может найти foo\SomeClass.class, или лучше, как правильно создать банку?

ява версия «1.8.0_102»

ответ

1

Исполняемый что вы бежите из командной строки появляется, чтобы начать в директории build, и, как таковой, он не знает, где файл foo\SomeClass.class относится к build - это также объясняет, почему работает test\java\foo\SomeClass.class (он знает, как найти файл относительно каталога выполнения).

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

+0

Но это то, что '-C тест \ флаг java' для, нет? В противном случае, как он найдет «Main.class»? –

+0

Возможно, только первый путь зависит от опции «-C test \ java»? –

+1

Вы правы, аргумент влияет только на следующий входной файл. См. Ответ, который я добавил. –

1

Я только что нашел ответ на странице документации, которую я раньше не видел.

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

Таким образом, аргумент -C должен быть помещен для каждого входа, а не только один раз.

Источник: http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jar.html

Смежные вопросы