2012-09-28 103 views
1

在我的Java动态Web项目中我正在使用构建路径导入另一个Java项目,以便我可以查询这些类并使用Java反射。在编写我的课程时,我最初通过将它作为Java应用程序运行来测试它,并且它工作正常。然而,我现在使用相同的类作为动态Web项目的一部分,它似乎无法访问导入的Java项目。我曾尝试将它导入到Eclipse中我的项目引用,它仍然无法正常工作,输出以下错误:导入Java项目以在Java动态Web项目中使用

HTTP Status 500 - javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler 

-------------------------------------------------------------------------------- 

type Exception report 

message javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler 

description The server encountered an internal error (javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler) that prevented it from fulfilling this request. 

exception 

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549) 
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:722) 


root cause 

javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler 
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:911) 
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:840) 
org.apache.jsp.UpdatingDb_jsp._jspService(UpdatingDb_jsp.java:98) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
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:722) 


root cause 

java.lang.NoClassDefFoundError: com/q1labs/qa/selenium/widgets/WidgetHandler 
com.q1labs.qa.xmlgenerator.controller.updatedb.DbUpdateScript.updateObjectTypes(DbUpdateScript.java:40) 
com.q1labs.qa.xmlgenerator.controller.updatedb.DbUpdateScript.updateDb(DbUpdateScript.java:31) 
org.apache.jsp.UpdatingDb_jsp._jspService(UpdatingDb_jsp.java:88) 
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
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:722) 

回答

6

检查您的项目属性>部署组件配置。前往添加并选择项目>下一步并选择您的项目。现在这将只包含您的项目的类。如果您的Java项目包含外部或其他JAR引用,则还必须将它们手动包含在新Web项目中,方法是将它们复制到您的WEB-INF/lib或将它们添加为External Jars。如果你做第二个,不要忘记在订单&导出选项卡上标记它们。

+0

我查看了部署程序集,并未添加我的Java构建路径条目,但是我导入的项目没有出现在Java构建路径条目中,可能是因为它不是.JAR而是未编译的项目。 – Colin747

+0

在** Deployment Assembly **窗口中,当您单击** Add ... **时,而不是选择_Java Build Path Entries_,请选择_Project> Next_并在那里选择它。这应该可以做到这一点。如果有效,我会更新答案。 – betomontejo

+0

这似乎解决了这个问题只是为了迎接一个新的错误信息: 'HTTP状态500 - javax.servlet.ServletException:java.lang.NoClassDefFoundError:org/openqa/selenium/NoAlertPresentException' – Colin747

0

您可以打开该部署并检查是否位于WEB-INF这里面的类文件战争文件/类?如果是这种情况,请在构建路径中检查您的source tab

+0

WAR文件在哪里? – Colin747