2016-01-29 31 views
0

我成功地能够连接一个简单的java应用程序,通过声明它适当并将MySQL连接器jar文件导入到项目中打印出所有数据。但是,问题是我想通过Web应用程序(glassfish)连接到MySQL。我已经导入了MySQL连接器jar文件并且正确地声明了它,但我不明白为什么找不到驱动程序。MySQL驱动程序未知的未知问题

下面是我收到的错误:

2016 - 01 - 29T16: 22: 25.873 + 0000 | Info: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 
 
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java: 1783) 
 
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java: 1633) 
 
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java: 187) 
 
at org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java: 125) 
 
at java.lang.Class.forName0(Native Method) 
 
at java.lang.Class.forName(Class.java: 264) 
 
at org.apache.jsp.validate_jsp._jspService(validate_jsp.java: 56) 
 
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java: 111) 
 
at javax.servlet.http.HttpServlet.service(HttpServlet.java: 790) 
 
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java: 411) 
 
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java: 473) 
 
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java: 377) 
 
at javax.servlet.http.HttpServlet.service(HttpServlet.java: 790) 
 
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java: 1682) 
 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 318) 
 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java: 160) 
 
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java: 734) 
 
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java: 673) 
 
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java: 99) 
 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 174) 
 
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java: 416) 
 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 283) 
 
at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java: 459) 
 
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java: 167) 
 
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java: 206) 
 
at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java: 180) 
 
at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java: 235) 
 
at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java: 119) 
 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java: 283) 
 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java: 200) 
 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java: 132) 
 
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java: 111) 
 
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java: 77) 
 
at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java: 536) 
 
at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java: 112) 
 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java: 117) 
 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java: 56) 
 
at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java: 137) 
 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java: 591) 
 
at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java: 571) 
 
at java.lang.Thread.run(Thread.java: 745)

Validate.jsp

<% @page language = "java" 
 
contentType = "text/html; charset=ISO-8859-1" 
 
pageEncoding = "ISO-8859-1" %> 
 
    < !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 
"http://www.w3.org/TR/html4/loose.dtd" > 
 
<% @page import = "java.sql.*" %> 
 
    <% 
 
    try { 
 
    String username = request.getParameter("username"); 
 
    String password = request.getParameter("password"); 
 
    String driver = ("com.mysql.jdbc.Driver"); 
 
    Class.forName(driver); // MySQL database connection 
 
    Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/ebooking" + "user=user&password=user"); 
 
    PreparedStatement pst = conn.prepareStatement("Select * from student where stu_username=? and stu_password=?"); 
 
    pst.setString(1, username); 
 
    pst.setString(2, password); 
 
    ResultSet rs = pst.executeQuery(); 
 
    if (rs.next()) 
 
     out.println("Valid login credentials"); 
 
    else 
 
     out.println("Invalid login credentials"); 
 
    } catch (Exception e) { 
 
    System.out.println(e); 
 
    out.println("Something went wrong !! Please try again"); 
 
} %>

+0

将你的'mysql-jdbc-connector.jar'放在tomcat的lib文件夹下。 – STaefi

+0

@STaefi我不是usinfg tomcat。我正在使用glassfish。 – user4591082

+0

好的玻璃鱼也有一个lib文件夹。所有类和jar文件都在服务器启动时加载。 'GLASSFISH_HOME_DIR/glassfish/lib' – STaefi

回答

0

确保您有添加ED的mysql library文件到图书馆

添加?之前用户

变化:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/ebooking" + "user=user&password=user"); 

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/ebooking" + "?user=user&password=user"); 
+0

我仍然收到同样的错误。 – user4591082

0

任何JDBC API调用需要支持合适的JDBC驱动程序由底层数据库。

请检查您的应用程序WAR文件,它具有MYSQL数据库的jdbc驱动程序。会发生

ClassNotFoundException的,如果罐子是不是在你的JVM

0

的类加载器加载我觉得你有与getConnection方法有问题。此方法正在等待三个参数。

import java.sql.Connection; 
import java.sql.DriverManager; 

public class JavaConnect { 
    public static void ImportDriver() { 
     try { 
      Class.forName("com.mysql.jdbc.Driver"); 
     } 
     catch(ClassNotFoundException ex) { 
      ex.printStackTrace(); 
     } 
    } 

    public static Connection ConnectDB() { 
     Connection connection = null; 
     String url = "jdbc:mysql://localhost/ebooking"; 
     try { 
      connection = DriverManager.getConnection(url, "user", "user"); 
      return connection; 
     } 
      catch(Exception ex) { 
      ex.printStackTrace(); 
      System.out.println("Please try again !"); 
     } 

     return connection; 
    } 
} 

我希望这会帮助你!祝你有美好的一天 !

+0

好吧,我明白了,但我将如何实现这一点,因为我所有的工作都在jsp中? – user4591082

+0

看这个帖子,如果你还没有找到http://stackoverflow.com/questions/13505833/connecting-mysql-from-jsp – Mirouf

0

尝试写连接字符串可能加入portebooking?代替ebooking这样的:

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:8080/ebooking?" + 
           "user=user&password=user"); 

不要forgit增加可用jdbc driver