Предупреждение Eclipse: XXXXXXXXXXX.jar не будет экспортирован или опубликован. Исключения ClassNotFoundException во время выполнения могут привести к

Я продолжаю получать следующую ошибку после того, как поместил необходимые файлы в путь сборки в Eclipse. Я работаю над приложением Spring MVC Hello World и использую Eclipse Helios для разработчиков Java EE:

Jan 16, 2012 1:25:42 PM org.apache.catalina.core.StandardContext loadOnStartup
SEVERE: Servlet /SpringMVCTutorial threw load() exception
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1010)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
    at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
    at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Я попытался щелкнуть правой кнопкой мыши сервер и нажать «очистить». Я щелкаю приложение правой кнопкой мыши, выбираю «Путь сборки», «Настроить путь сборки» и помещаю нужные файлы JAR в библиотеку; однако он по-прежнему не признает их как зависимости. Что мне не хватает?

Я попробовал совет, представленный здесь< /а>:

  1. Щелкните правой кнопкой мыши свой веб-проект.
  2. Нажмите «Свойства»
  3. Выберите «Зависимости модуля Java EE».
  4. Перейдите на вкладку «Веб-библиотеки».
  5. Добавьте внешние JAR (если JAR находится за пределами вашего проекта). Запись будет добавлена ​​в Jar/Module, убедитесь, что вы установили флажок (установлен).

Проблема в том, что когда я выбираю «Щелкнуть свойства», у меня нет возможности щелкнуть зависимости модуля Java EE, так как он не отображается. Я загрузил все дополнительные инструменты Java EE и до сих пор не могу их найти.


person Mike    schedule 16.01.2012    source источник
comment
Используете ли вы Maven для управления своими зависимостями?   -  person Alex Barnes    schedule 17.01.2012
comment
Нет. Я подумал, что если бы я делал все через Eclipse, у меня бы тоже не было. Я думал, вам нужен только Maven, если вы не используете IDE?   -  person Mike    schedule 17.01.2012
comment
Я получаю это сейчас . . . Я скачал плагины Maven для Eclipse. Спасибо за наводку :)   -  person Mike    schedule 22.01.2012
comment
Я думаю, вам будет намного проще, чем пытаться вручную управлять своими зависимостями. Удачи.   -  person Alex Barnes    schedule 22.01.2012


Ответы (3)


Чтобы заставить его работать правильно, мне нужно «перетащить» файлы, которые я хочу в моем пути к классам/зависимостям, в мою папку WEB-INF/lib. Это работает следующим образом.

По какой-то причине, когда я пытаюсь сделать это правильно

Путь сборки → Настроить путь сборки → Внешние банки

просто не берет их.

Хитрость заключается в том, что я должен поместить файлы в папку с библиотеками веб-приложений, и единственный способ сделать это (который я вижу) — «щелкнуть и бросить» в мою папку WEB-INF/lib. Таким образом, он автоматически отображается в моих библиотеках веб-приложений.

person Mike    schedule 22.01.2012
comment
Думаю, если бы я не использовал maven, я бы поместил все банки в каталог lib, а затем добавил их в путь к классам оттуда. - person Alex Barnes; 22.01.2012
comment
Похоже на функцию Eclipse - я столкнулся с ней и в выпуске 4.2 (Juno). - person mjn; 13.11.2012
comment
Если вы строите с помощью maven: игнорируйте это в Eclipse навсегда: Windows -> Настройки -> Проверка -> деактивировать Classpath Dependencies Validator (по крайней мере :)) - person Harald Brabenetz; 26.03.2014
comment
Для записи (на случай, если люди попадут сюда через поиск): если я не ошибаюсь, то, что вам нужно, теперь (то есть, по крайней мере, в Luna SR2+) доступно через вкладку/раздел сборки развертывания свойств проекта. Там (чуть выше пути сборки Java с левой стороны) вы можете сделать «Добавить», выбрать записи пути сборки Java и все ваши зависимые банки, чтобы они были включены в соответствующие папки вашего сервера приложений (например, Tomcat) во время работы/ отладка внутри IDE. - person OzgurH; 11.10.2016
comment
Я исправил свои проблемы, используя этот ответ. Тот факт, что добавление их с помощью Build Path -> .. -> Add External JARs... не сработало, заключается в том, что вам нужно добавить их с помощью Build Path -> .. -> Add JARS..., а затем выбрать те, которые находятся в вашей папке WEB-INF/lib. Это помогло мне. - person WannaGetHigh; 01.06.2018
comment
Все еще функция Eclipse, обнаруженная в 2019-12 (4.14.0). Просто скопируйте и вставьте в WEB-INF/lib, чтобы решить проблему. - person Neoraptor; 02.02.2020

При добавлении новых файлов jar я получил два сообщения о Eclipse Problems Tab: одну ошибку и одно предупреждение. Я решил эту проблему только при объединении всех предыдущих решений с дополнительным шагом. Вот как я решил это:

  1. «Перетащите» файлы, которые я хочу из моего classpath/dependencies, в мою папку WEB-INF/lib/;
  2. Щелкните правой кнопкой мыши по вашему проекту во вкладке Package Explorer и build path --> configure build path --> external jars, добавив нужные файлы;
  3. Перезапустил Эклипс;
  4. Выберите Project --> Clean…. Моя система настроена на автоматическую сборку, поэтому после этого шага сообщение об ошибке исчезло, но предупреждение XXXXXXXXXXX.jar will not be exported or published. Runtime ClassNotFoundExceptions may result осталось;
  5. Щелкните правой кнопкой мыши предупреждающее сообщение --> Quick Fix;
  6. Выберите опцию Mark the associated raw classpath entry as a publish/export dependency. (на следующем рисунке)

Быстрое исправление предупреждающего сообщения

person Erick    schedule 17.12.2015
comment
Это было самое простое решение, и оно хорошо сработало для меня. Спасибо! - person jfajunior; 15.05.2019

Щелкните правой кнопкой мыши свой проект на вкладке «Проводник проектов» и перейдите к «Путь сборки» → «Настроить путь сборки» → «Внешние банки» и добавьте все нужные JAR-файлы.

person Ramesh Kotha    schedule 16.01.2012
comment
Проблема в том, что я делал, но я все еще получаю вышеупомянутые ошибки. Добавляемые банки удаляют мои ошибки компиляции, но теперь и ошибки зависимостей. Иди разберись! - person Mike; 17.01.2012