Несколько банок в classpath не работают - PullRequest
1 голос
/ 30 ноября 2011

Я видел несколько очень похожих вопросов по stackoverflow, но не сталкивался ни с чем, что точно соответствует моей проблеме.У меня есть папка с несколькими файлами .java и другая папка с двумя файлами .jar.Мне нужно включить оба файла jar при использовании javac, чтобы весь проект компилировался за один раз:

$: javac -classpath .:~/myjardir/*.jar ~/myprojectdir/*.java

Но если я сделаю это, распознается только первый jar и все, что зависитвторая банка выдает ошибку.Удивительно, но если я скомпилирую каждую программу по отдельности,

$: javac -classpath .:~/myjardir/oneofthejars.jar ~/myprojectdir/file1.java

, тогда все работает нормально.Я также скомпилировал проект в Eclipse отдельно, чтобы протестировать код и фляги.Только когда я пытаюсь использовать обе банки с -classpath в командной строке, я получаю ошибки.Записи с подстановочными знаками должны работать в JDK6, поэтому я в растерянности.

Ответы [ 3 ]

2 голосов
/ 30 ноября 2011

Символы пути к классам не работают так, как в оболочках Unix. * означает все с именем *.jar в каталоге. Так что вам не нужно делать *.jar, а просто *. Следующее должно делать то, что вы хотите:

$: javac -classpath .:~/myjardir/* ~/myprojectdir/*.java

См. Общие сведения о подстановочных знаках пути класса в документации Java SE 6 .

1 голос
/ 30 ноября 2011

см. ответ SO здесь , но вот соответствующий параграф из документации Java:

Записи пути к классу могут содержать подстановочный знак базового имени *, который считается эквивалентным указаниюсписок всех файлов в каталоге с расширением .jar или .JAR.Например, запись пути к классу foo / ** определяет все файлы JAR в каталоге с именем foo.Запись classpath, состоящая просто из *, расширяется до списка всех jar-файлов в текущем каталоге.

0 голосов
/ 30 ноября 2011

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

...