我正在 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)
查看 LoginServlet.java 代码,第 61 行,它是:
getServletContext().getRequestDispatcher("/Welcome.jsp").forward(request, response);
自从我将整个项目从Tomcat服务器迁移到Jetty服务器后,该项目可以在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/Test/Welcome.jsp
然后输入 slc/slc 作为用户名和密码进行登录。
如果您想运行它,以上是您需要执行的所有步骤。
非常感谢您的建议或帮助!!
最佳答案
该 url 需要在 derbyclient.jar 中找到客户端驱动程序 检查您是否可以在类路径上使用 derbyclient.jar 访问 ij 中完全相同的 url。如果可以,则意味着 Derby 客户端驱动程序可以识别该 url。那么唯一的其他解释是,当尝试获取连接时,您的 jetty 服务器在类路径上没有 derbyclient.jar。
由于我不知道如何配置jetty,所以我不知道错误可能出在哪里。但我会寻找列出 jar 的任何位置并确保包含 derbyclient.jar。
关于java - Jetty + Derby 未找到合适的司机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22600211/