Как использовать подстановочный шаблон в classpath для добавления нескольких банок?

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

Мне было интересно, есть ли способ включить все файлы jar в папку с помощью подстановочного (*) оператора (например, *.jar). Но, похоже, это не работает. Есть ли другой способ, который может сократить CLASSPATH, который в настоящее время выглядит как эссе;) на моем ПК?.

Ответ 1

От: http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html

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

Это должно работать в Java6, не уверен в Java5

(Если кажется, что он не работает должным образом, попробуйте положить кавычки, например: "foo/*")

Ответ 2

Это работает в Windows:

java -cp "lib/*" %MAINCLASS%

где %MAINCLASS%, конечно, класс, содержащий ваш основной метод.

В качестве альтернативы:

java -cp "lib/*" -jar %MAINJAR%

где %MAINJAR% - файл jar для запуска через его внутренний манифест.

Ответ 3

В Java 6 были введены базовые карты Basename; то есть "foo/*" означает все файлы ".jar" в каталоге "foo".

В более ранних версиях Java, которые не поддерживают шаблоны классов подстановочных знаков, я прибегал к использованию оболочки оболочки script для сборки класса Path путем "подбора" шаблона и искажения результатов для вставки символов ":" в соответствующих точках, Это было бы трудно сделать в файле BAT...

Ответ 4

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

Я устанавливаю CLASSPATH для каждого проекта, используя либо IDE, либо Ant. Я делаю много веб-разработки, поэтому каждая WAR и EAR использует свой собственный CLASSPATH.

Он игнорируется IDE и серверами приложений. Почему у вас это есть? Я бы рекомендовал удалить его.

Ответ 5

Почему бы вам не очистить свой беспорядок, переместив файлы REQUIRED jar в одну папку и установив путь к этой папке?;)