Подтвердить что ты не робот

Где поставить внешние банки?

Я использую Eclipse (3.4), а компиляция классов не вызывает никаких предупреждений или ошибок. Мой проект использует внешний файл jar.

Где мне нужно поместить этот внешний файл jar, чтобы не получить java.lang.NoClassDefFoundError при использовании этого класса из другого проекта (не в Eclipse)?

Я мог бы просто извлечь банку в папку проекта, но это не кажется правильным.

Изменить: этот вопрос касается не импорта контейнеров в Eclipse, а использования их вне Eclipse.

4b9b3361

Ответ 1

Если вы хотите включить JAR файл в проект Eclipse, вы обычно создаете папку "lib" внутри папки проекта и помещаете туда файл. Затем вам нужно сказать eclipse, чтобы включить его в свой путь к классу, чтобы ваш код скомпилировался и запустился внутри eclipse.

Для этого:
- Зайдите в свойства вашего проекта
- Выберите "Java Build Path" в левой колонке
- Выберите вкладку "Библиотеки" в центральной части окна
- Нажмите кнопку "Добавить JARs" - это даст вам список ваших проектов в eclipse - разверните свой проект и в папку lib - ваша банка будет там.
- Выберите JAR, нажмите "ОК" и "ОК" снова из окна свойств.

Теперь ваш код будет компилироваться и запускаться.

Ответ 2

поместите его в папку jre/lib/ext

все сказанное о пути к классам истинно, но это последовательное и разумное место для его жизни.

вы можете узнать свою папку jre, посмотрев переменную среды JAVA_HOME в Windows.

Ответ 3

Не важно, куда вы его поместили, но вам нужно настроить другой проект без Eclipse, чтобы поместить внешние банки в его путь к классам - или использовать механизм каталогов расширений, если нужно. (Это проще, но сделать его явным, возможно, лучше.)

Ответ 4

Ответ Саймона кажется лучшим, но немного устаревшим. Поделитесь этим документом Oracle Установленные расширения.

Начиная с Java 6, файлы расширения JAR также могут быть помещены в место, которое не зависит от какой-либо конкретной JRE, поэтому расширения могут быть разделены всеми JRE, которые установлены в системе.

В нем говорится, что для Windows вы должны разместить свои расширения здесь% SystemRoot%\Sun\Java\lib\ext.

Ответ 5

Вам просто нужно ссылаться на него с помощью параметра -classpath в папке, которая не включена в рабочее пространство eclipse, то есть вообще не зависит от затмения.

Предупреждение, вы можете выполнить свой другой проект с помощью java -jar, если вы ссылаетесь на свою внешнюю банку с опцией -cp (см. этот вопрос)

Ответ 6

Я помещаю его в новую папку. Эта папка должна быть включена в путь сборки. Это не имеет значения, если это в Eclipse или снаружи. Eclipse имеет конкретный путь построения проекта и передает этот путь в javac. Если вы хотите выполнить javac вне Eclipse, вам необходимо вручную передать путь сборки.

Ответ 7

Я знаю, что это не совсем то, что вы просите, но считаете ли вы, что используете Maven? Некоторые из таких плагинов, как сборка, могут быть полезны в таких ситуациях.

Ответ 8

Возьмите банку внутри Eclipse, как написал Джеймс Камфилд.

Затем, когда вы создаете (Ant, Maven, вручную) для распространения, убедитесь, что файл jar включен в или из вашего приложения jar или war или ear или любого другого файла и что все сценарии запуска включают его в путь к классам, используя параметр командной строки -classpath для java, как писал VonC.

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

Ответ 9

Создайте общий каталог lib и поместите эту банку и любые другие распространенные файлы jars, которые у вас могут быть там. Если вы используете Maven, вы уже имеете его в форме локального репо.

В Eclipse создайте переменную classpath для этого каталога, а затем используйте ее для ссылки на ваш файл jar в ваших проектах. Если у вас есть несколько проектов, отвечающих этим условиям, это значительно облегчит жизнь. Это также упрощает изменение местоположения корневого каталога, если вы переходите с локального диска на сетевой.

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