Как использовать подстановочный шаблон в 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 в одну папку и установив путь к этой папке?;)