2012-12-16 16 views
16

ho scritto un programma Java Servlet, ma quando l'eseguo, si stava mostrando l'eccezionejava.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver 

mio codice è

package skypark; 

import java.io.*; 
import javax.servlet.*; 
import java.text.*; 
import javax.servlet.http.*; 
import java.sql.*; 
import java.sql.Date; 

public class Registration extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    public static Connection prepareConnection() throws ClassNotFoundException, SQLException { 
     String dcn = "oracle.jdbc.driver.OracleDriver"; 
     String url = "jdbc:oracle:thin:@JamesPJ-PC:1521:skypark"; 
     String usname = "system"; 
     String pass = "tiger"; 
     Class.forName(dcn); 
     return DriverManager.getConnection(url, usname, pass); 
    } 

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     resp.setContentType("text/html"); 
     PrintWriter out = resp.getWriter(); 

     try { 
      String phone1, dofb, date1, month, year, uname, fname, lname, address, city, state, country; 
      String pin, email, password, gender, lang, qual, relegion, privacy, hobbies, fav; 

      uname = req.getParameter("uname"); 
      fname = req.getParameter("fname"); 
      lname = req.getParameter("lname"); 
      date1 = req.getParameter("date"); 
      month = req.getParameter("month"); 
      year = req.getParameter("year"); 
      address = req.getParameter("address"); 
      city = req.getParameter("city"); 
      state = req.getParameter("state"); 
      country = req.getParameter("country"); 
      pin = req.getParameter("pin"); 
      email = req.getParameter("email"); 
      password = req.getParameter("password"); 
      gender = req.getParameter("gender"); 
      phone1 = req.getParameter("phone"); 

      lang = ""; 
      qual = ""; 
      relegion = ""; 
      privacy = ""; 
      hobbies = ""; 
      fav = ""; 

      dofb = date1 + "-" + month + "-" + year; 
      int phone = Integer.parseInt(phone1); 
      DateFormat formatter; 
      java.util.Date dob; 
      formatter = new SimpleDateFormat("dd-MM-yy"); 
      dob = formatter.parse(dofb); 

      Connection con = prepareConnection(); 
      String Query = "Insert into regdetails values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
      PreparedStatement ps = con.prepareStatement(Query); 

      ps.setString(1, uname); 
      ps.setString(2, fname); 
      ps.setString(3, lname); 
      ps.setDate(4, (Date) dob); 
      ps.setString(5, address); 
      ps.setString(6, city); 
      ps.setString(7, state); 
      ps.setString(8, country); 
      ps.setString(9, pin); 
      ps.setString(10, lang); 
      ps.setString(11, qual); 
      ps.setString(12, relegion); 
      ps.setString(13, privacy); 
      ps.setString(14, hobbies); 
      ps.setString(15, fav); 
      ps.setString(16, gender); 

      int c = ps.executeUpdate(); 

      String query = "insert into passmanager values(?,?,?,?)"; 
      PreparedStatement ps1 = con.prepareStatement(query); 

      ps1.setString(1, uname); 
      ps1.setString(2, password); 
      ps1.setString(3, email); 
      ps1.setInt(4, phone); 

      int i = ps1.executeUpdate(); 

      if (c == 1 || c == Statement.SUCCESS_NO_INFO && i == 1 || i == Statement.SUCCESS_NO_INFO) { 
       out.println("<html><head><title>Login</title></head><body>"); 
       out.println("<center><h2>Skypark.com</h2>"); 
       out.println("<table border=0><tr>"); 
       out.println("<td>UserName/E-Mail</td>"); 
       out.println("<form action=login method=post"); 
       out.println("<td><input type=text name=uname></td>"); 
       out.println("</tr><tr><td>Password</td>"); 
       out.println("<td><input type=password name=pass></td></tr></table>"); 
       out.println("<input type=submit value=Login>"); 
       out.println("</form></body></html>"); 
      } else { 
       out.println("<html><head><title>Error!</title></head><body>"); 
       out.println("<center><b>Given details are incorrect</b>"); 
       out.println(" Please try again</center></body></html>"); 
       RequestDispatcher rd = req.getRequestDispatcher("registration.html"); 
       rd.include(req, resp); 
       return; 
      } 
     } catch (ClassNotFoundException cnfe) { 
      out.println("<html><head><title>Error!</title><body>"); 
      out.println("<b><i>Class not found " + cnfe + "</i></b>"); 
      out.println("</body></html>"); 
     } catch (SQLException sqle) { 
      out.println("<html><head><title>Error!</title><body>"); 
      out.println("<b><i>Unable to process try after some time Sql error</i></b>"); 
      out.println("</body></html>"); 
     } catch (ParseException e) { 
      out.println("<html><head><title>Error!</title><body>"); 
      out.println("<b><i>Unable to process Parseint exc " + e + "</i></b>"); 
      out.println("</body></html>"); 
     } 

     out.flush(); 
     out.close(); 
    } 
} 

il mio percorso classe è:

C: \Windows\ system32 > echo % classpath % 
    E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ oui\ jlib\ classes12.jar; 
E: \app\ JamesPJ\ product 11.2.0\ dbhome_1\ jlib\ orai18n.jar; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ jdbc\ lib\ ojdc6_g.jar; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ BIN; 
C: \Program Files\ Java\ jdk1.7.0_09\ bin; 
C: \Users\ JamesPJ\ Documents; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ jdbc\ lib; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ jlib; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ jdbc\ lib\ ojdbc6.jar; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ oc4j\ jdbc\ lib\ orai18n.jar; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ oc4j\ jdbc\ lib\ ocrs12.jar; 
E: \app\ JamesPJ\ product\ 11.2.0\ dbhome_1\ owb\ wf\ lib\ ojdbc14.jar; 
C: \Program Files\ Apache Software Foundation\ Tomcat 7.0\ lib\ servlet - api.jar 

Quando do il

java oracle.jdbc.driver.OracleDriver 

comando nel prompt dei comandi, si stava mostrando seguenti linee

Error: Main method not found in class oracle.jdbc.driver.OracleDriver, please define the main method as: 
     public static void main(String[] args) 
+1

OracleDriver non contiene un metodo principale. Non è possibile avviare un servlet senza un contenitore corrispondente (come tomcat) ... chiamare 'java oracle.jdbc.driver.OracleDriver' non ha alcun senso. – home

risposta

19

Avete copiato classes12.jar nella cartella lib della vostra applicazione web e impostare il classpath in Eclipse.

progetto pulsante destro del mouse in Package Explorer percorso Build -> Aggiungi archivi esterni ...

Selezionate il vostro archivio ojdbc6.jar

Premere OK

O

Passare attraverso questo link e leggi e fai attenzione.

La libreria deve ora essere referenziata in "Librairie di riferimento" in Esplora pacchetti. Ora prova a eseguire nuovamente il tuo programma.

+0

sì ho copiato classes12.jar ad ojdbc14.jar –

+0

quale versione oracle si utilizza 8i o 10g –

+0

sto usando oracle 11g R2 –

14

Passare attraverso il percorso C:\apache-tomcat-7.0.47\lib (questo percorso potrebbe essere diverso in base a dove è stato installato il server Tomcat) quindi oltre ojdbc14.jar se non è contenuto.

Quindi riavviare il server in Eclipse quindi eseguire la vostra applicazione sul server di

+0

+1 questo ha risolto il problema per me. –

+0

@Ravikumar D G: +1 ha risolto il problema anche per me. –

+0

Questo è brillante ... il mio problema è risolto –

0

mi è stato sempre lo stesso genere di errore, ma dopo aver copiato l'ojdbc14.jar nella cartella lib, non più un'eccezione. (Copia ojdbc14.jar da qualche parte e pasta . nella cartella lib all'interno WebContent)

0

ho avuto lo stesso problema, ma è stato in grado di risolvere il problema nel modo seguente:

fare clic destro sul progetto -> Proprietà, quindi aggiungere il JAR (odjbc6 o 14) file nel gruppo di distribuzione.

+0

La tua risposta si riferisce a un IDE e configurazione specifici, ma penso che gli OP siano diversi. Sembra che abbiano aggiunto questo barattolo al loro classpath. –

0

mi è stato sempre lo stesso genere di errore ma dopo copiando il ojdbc14.jar nella lib cartella, non di più fa eccezione. (Copia ojdbc14.jar da qualche parte e incollarlo nella cartella lib all'interno WebContent.)

5

squadra! Per eseguire SQL-query dal Servlet si dovrebbe aggiungere biblioteca jar JDBC nella cartella

WEB-INF/lib 

Dopo questo si potrebbe chiamare il driver, ad esempio:

Class.forName("oracle.jdbc.OracleDriver"); 

Ora Y può utilizzare la connessione al DB server

==> 73!

2

provo ad aggiungere ojdbc6.jar attraverso il lib server "C: \ apache-tomcat-7.0.47 \ lib",

Quindi riavviare il server in Eclipse.

Problemi correlati