Как использовать подстановочный знак в пути к классам, чтобы добавить несколько банок?
Я использовал так много сторонних библиотек (jar-файлов), что мой CLASSPATH полностью запутался, так как я должен указать путь для каждого отдельного jar-файла, который я использую.
Мне было интересно, есть ли способ включить все файлы JAR в папку с помощью оператора подстановки (*) (например, *.jar). Но, похоже, не работает. Есть ли другой способ, который может сократить CLASSPATH, который в настоящее время выглядит как эссе;) на моем компьютере?
4 ответа
От: http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
Записи пути к классу могут содержать подстановочный знак базового имени
*
, что считается эквивалентным указанию списка всех файлов в каталоге с расширением.jar или.JAR. Например, запись пути к классуfoo/*
определяет все файлы JAR в каталоге с именем foo. Запись пути к классу, состоящая просто из*
расширяется список всех файлов JAR в текущем каталоге.
Это должно работать в Java6, не уверен насчет Java5
(Если кажется, что он не работает должным образом, попробуйте поставить кавычки. Например: "foo/*"
)
Это работает на Windows:
java -cp "lib/*" %MAINCLASS%
где %MAINCLASS%
Конечно, это класс, содержащий ваш основной метод.
В качестве альтернативы:
java -cp "lib/*" -jar %MAINJAR%
где %MAINJAR%
это файл jar для запуска через его внутренний манифест
Подстановочные знаки базового имени были введены в Java 6; то есть "foo/*" означает все файлы ".jar" в каталоге "foo".
В более ранних версиях Java, которые не поддерживают подстановочные пути к классам, я прибегал к использованию сценария оболочки-оболочки для сборки Classpath, "разбивая" шаблон и искажая результаты для вставки символов ":" в соответствующие точки. Это было бы трудно сделать в файле BAT...
Если вы имеете в виду, что у вас есть переменная окружения с именем CLASSPATH, я бы сказал, что это ваша ошибка. У меня нет такой вещи ни на одной машине, с которой я разрабатываю Java. CLASSPATH настолько привязан к конкретному проекту, что невозможно иметь единый правильный CLASSPATH, который работает для всех.
Я устанавливаю CLASSPATH для каждого проекта, используя IDE или Ant. Я много занимаюсь веб-разработкой, поэтому каждый WAR и EAR использует свой собственный CLASSPATH.
Это игнорируется IDE и серверами приложений. Почему у вас это есть? Я бы порекомендовал удалить его.