Кажется, в этой области есть ряд вопросов по SO, но я не смог найти ни одного именно с моим сценарием:
У меня есть два проекта в Eclipse: Core и Interface.
В проекте Core у меня есть 5 файлов .jar
, которые содержат полезные классы и так далее. Допустим, одна из банок называется DAO.
В проекте интерфейса я перешел к пути сборки (щелкнув правой кнопкой мыши> Путь сборки> Настроить путь сборки...) и перешел в раздел «Проекты», а затем добавил основной проект.
Сначала проект Interface по-прежнему не мог видеть классы в DAO.jar, что меня смутило, но я обнаружил, что, перейдя в путь сборки основного проекта и установив флажок рядом с DAO.jar (для экспорта), компилятор остановился. жаловался, и я смог использовать классы из DAO.jar.
(Чтобы быть конкретным, я делаю веб-приложение Java с сервлетами, JSP и т. д., работающее на локальном сервере Tomcat.)
Я создаю проект, но когда я перехожу к сервлету, где метод Get использует класс из DAO.jar, я получаю NoClassDefFoundError. Вот трассировка стека:
java.lang.ClassNotFoundException: dao.DirectSqlVisitorImpl
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:792)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2928)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1174)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1669)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
interface.DonationsServletController.doGet(DonationsServletController.java:79)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Я понял, что JRE не может найти определение класса DirectSqlVisitorImpl во время выполнения, даже несмотря на то, что проверка ошибок Eclipse позволяет ему летать теперь, когда я настроил свой путь сборки (на первый взгляд) правильным способом.
Итак, что мне нужно сделать, чтобы убедиться, что jar втягивается в проект Interface через проект Core?
В качестве примечания, я бы предпочел не делать что-то вроде добавления банок непосредственно в проект интерфейса, поскольку проект Core может использоваться другими проектами, и я хотел бы иметь модификации каскада основного проекта для всех зависимых проектов. .
Спасибо!
clean and build
- person   schedule 01.03.2014