我在Eclipse中使用Jetty + Derby。我收到了这个错误:
javax.servlet.jsp.JspException: Unable to get connection, DataSource invalid: "java.sql.SQLException: No suitable driver found for jdbc:derby://localhost:1527/airlinesDB;user=slc;password=slc;"
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnection(QueryTagSupport.java:314)
at org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(QueryTagSupport.java:197)
at org.apache.jsp.Welcome_jsp._jspx_meth_sql_query_0(Welcome_jsp.java:433)
at org.apache.jsp.Welcome_jsp._jspService(Welcome_jsp.java:108)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:403)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:489)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:972)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:906)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:267)
at org.eclipse.jetty.server.Dispatcher.forward(Dispatcher.java:98)
at com.ibm.sample.LoginServlet.doPost(LoginServlet.java:61)
查看第61行中的LoginServlet.java代码,它是:
getServletContext().getRequestDispatcher("/Welcome.jsp").forward(request, response);
因为我将整个项目从Tomcat Server移动到Jetty Server,所以项目可以在Tomcat配置中成功运行。因此,我确信web.xml中的URL是正确的。我认为问题可能是由于Jetty中的一些错误配置。
我还以WAR格式导出整个项目,您可以通过以下方式访问它:
https://drive.google.com/file/d/0B1EhxQ7GBJdsYUlzZ1UtTkIxQTg/edit?usp=sharing
要运行此项目(或者您只想查看源文件),可以在Eclipse中导入此项目。 java源文件位于com.ibm.sample包下。另外,对于软件运行项目的先决条件,您应该在Eclipse中安装Derby和Jetty插件。
要运行它,您可以先启动Derby Network Server,然后启动Jetty,然后打开此URL:
本地主机:8080 /测试/ Welcome.jsp中
然后输入slc / slc作为用户名和密码进行登录。
以上是您想要运行它时需要执行的所有步骤。
非常感谢您的建议或帮助!!
答案 0 :(得分:1)
该url需要在derbyclient.jar中找到客户端驱动程序检查您是否可以在类路径中使用derbyclient.jar访问ij中完全相同的URL。如果可以,则表示Derby客户端驱动程序识别该URL。然后唯一的另一个解释是你的jetty服务器在尝试获取连接时在类路径上没有derbyclient.jar。
由于我不知道如何配置码头,我不知道错误的位置。但我会寻找列出罐子的任何地方,并确保包括derbyclient.jar。