Импортировать класс из внешнего проекта в 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.
Надеюсь, что это работает для вас, и что еще не поздно ответить!