Как добавить библиотеки JAR в проект WAR без обращения к java.lang.ClassNotFoundException? Classpath vs Build Path vs / WEB-INF / lib

Как добавить JAR-библиотеки в проект WAR в Eclipse без обращения к java.lang.ClassNotFoundException или java.lang.NoClassDefFoundError ?

Переменная среды CLASSPATH , похоже, не работает. В некоторых случаях мы добавляем JAR-файлы в свойство Build Path проекта Eclipse, чтобы скомпилировать код. Иногда нам нужно помещать файлы JAR в папку /WEB-INF/lib веб-приложения Java EE, чтобы код работал на classах внутри этого JAR.

Я не совсем понимаю, почему CLASSPATH не работает, и в каких случаях мы должны добавлять JAR для построения пути и когда именно эти JAR должны быть помещены в /WEB-INF/lib .

4 Solutions collect form web for “Как добавить библиотеки JAR в проект WAR без обращения к java.lang.ClassNotFoundException? Classpath vs Build Path vs / WEB-INF / lib”

Переменная среды CLASSPATH используется только командой java.exe и даже тогда, когда используется без каких-либо аргументов -classpath , -jar , -jar . Его игнорируют IDE, такие как Eclipse, Netbeans и IDEA. См. Также java.lang.ClassNotFoundException, несмотря на использование переменной среды CLASSPATH .

Путь сборки предназначен только для библиотек, которые необходимы для компиляции кода проекта. Ручное размещение JAR в /WEB-INF/lib или установка сборки развертывания или предоставление внешней системы сборки, такой как Maven, помещают как JAR в /WEB-INF/lib из WAR WAR во время сборки, это только для библиотек которые необходимы для того, чтобы код был развернут и запущен в целевой среде. Обратите внимание, что вы не должны создавать подпапки в /WEB-INF/lib . JAR должны быть размещены в корне.

Некоторые библиотеки уже предоставлены целевым сервером Java EE или сервлетконтейнером, таким как JSP, Servlet, EL и т. Д. Поэтому вам не нужно помещать JAR этих библиотек в /WEB-INF/lib . Более того, это может вызвать проблемы с загрузкой. Достаточно (косвенно) указать их только в пути сборки . В Eclipse вы обычно это делаете, устанавливая соответственно целевое время выполнения . Он автоматически закончится в пути сборки . См. Также Как импортировать API javax.servlet в проект Eclipse?

Другие библиотеки, как правило, сторонние, такие как Apache Commons, JDBC-драйверы и стандартные библиотеки, не предоставленные целевым сервером-сервлетом (например, Tomcat не поддерживает JSF, CDI, JPA, EJB и т. Д.), Нужно входить в /WEB-INF/lib . Вам не обязательно указывать его в пути сборки . Только, возможно, когда у вас уже есть это как пользовательская библиотека , но для этого вы должны использовать настройку сборки развертывания . См. Также ClassNotFoundException при использовании пользовательских библиотек в пути сборки Eclipse .

Если вы используете Maven, вам нужно обязательно убедиться, что вы помечаете библиотеки как provided если они уже предоставлены целевой средой выполнения, например Java EE, Servlet, EL и т. Д. В случае вы развертываете в WildFly, TomEE и т. д. Таким образом, они не попадут в /WEB-INF/lib из WAR (и могут вызвать конфликты с серверными библиотеками), но они попадут в Eclipse’s Build Path (и получить код проекта для компиляции).

Эти JAR-файлы в пути сборки ссылаются только на процесс сборки (компиляции). Если вы экспортируете свое веб-приложение, они не включены в окончательную WAR (попробуйте).

Если вам нужны JAR во время выполнения, вы должны поместить их в WEB-INF / lib или путь к classу сервера. Размещение JAR в пути к classам сервера имеет смысл только в том случае, если несколько WAR разделяют общую базу кода и имеют доступ к общим объектам (например, Singleton).

Если вы используете Maven :

Откройте свойства проекта, а в разделе « Развертывание» нажмите «Добавить» …

Затем выберите Java Build Path Entries и выберите Maven Dependencies

Я хочу дать ответ на следующий вопрос ссылки ClassNotFoundException oracle.jdbc.driver.OracleDriver только в сервлет, используя Eclipse

Ans: In Myeclipse перейдите на сервер -> щелкните левой кнопкой мыши на Myeclipse Tomcat7 -> Configure Connector сервера -> (развернуть) Myeclipse Tomcat7 -> Paths -> Prepend to classpath -> Добавить jar (добавить oracle14 jar) – -> оК

Interesting Posts
Давайте будем гением компьютера.