Импортировать класс из внешнего проекта в JSP

В Eclipse я пытаюсь импортировать классы из внешнего проекта A на страницу JSP другого проекта B.

Я создал класс в проекте B, в котором я вызываю несколько методов A, и все, кажется, работает хорошо: ошибок нет, результаты согласованы...

Но когда я импортирую в проект B JSP примерно так:

<%@page import="com.project_A_package.*" %>

а затем вызвать метод, как это, например,

<%= Project_A_Class.project_A_static_method() %>

Tomcat говорит, что не распознает Project_A_Class

Project_A_Class.cannot be resolved to a type

Во втором сценарии я даже вызвал в JSP класс, созданный в проекте B, который успешно извлек результаты из проекта A, и на этот раз я получаю эту ошибку (кстати, это "com/project_A_package/Project_A_Class" нормально?):

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)



root cause 
javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/project_A_package/Project_A_Class
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
    org.apache.jsp.project_B_jsp._jspService(project_B_jsp.java:82)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)



root cause 
java.lang.NoClassDefFoundError: com/project_A_package/Project_A_Class
    com.project_B_package.Project_B_Class.startExternal(Project_B_Class.java:7)
    org.apache.jsp.project_B_jsp._jspService(project_B_jsp.java:73)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)



root cause 
java.lang.ClassNotFoundException: com.project_A_package.Project_A_Class
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    com.project_B_package.Project_B_Class.startExternal(Project_B_Class.java:7)
    org.apache.jsp.project_B_jsp._jspService(project_B_jsp.java:73)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

Что нужно сделать, чтобы исправить эту ошибку, пожалуйста? Или, может быть, что нужно адаптировать в проекте A, чтобы можно было вызывать его в проекте B?

Большое спасибо за Вашу помощь.

1 ответ

Попробуйте экспортировать указанный проект A в виде Jar. После этого добавьте этот Jar-файл, а также все другие Jar-файлы, используемые A, в путь сборки вашего веб-приложения B и сборку развертывания B.

Надеюсь, что это работает для вас, и что еще не поздно ответить!

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