Как использовать подстановочный знак в пути к классам, чтобы добавить несколько банок?

Я использовал так много сторонних библиотек (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 и серверами приложений. Почему у вас это есть? Я бы порекомендовал удалить его.

Другие вопросы по тегам