2012-12-16 9 views
16

Napisałem program Java Servlet ale kiedy go uruchomić, to pokazywał Exceptionjava.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver

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

Mój kod jest

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(); 
    } 
} 

Moja klasa jest ścieżka:

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 

Kiedy daję

java oracle.jdbc.driver.OracleDriver 

polecenie w wierszu polecenia, to pokazywał następujące linie

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 nie zawiera głównej metody. Nie można uruchomić serwletu bez odpowiedniego kontenera (takiego jak tomcat) ... wywołanie 'java oracle.jdbc.driver.OracleDriver' nie ma żadnego sensu. – home

Odpowiedz

19

masz skopiowane classes12.jar lib w folderze aplikacji internetowej i ustawić ścieżkę klasy w Eclipse.

prawym przyciskiem myszy w Eksploratorze projektu Pakietu Build Path -> Dodaj archiwów zewnętrznych ...

Wybierz swoją ojdbc6.jar archiwum

Naciśnij OK

Albo

przejść przez ten link i przeczytaj i zrób ostrożnie.

Do biblioteki należy teraz odwoływać się w "Przywoływanych wawelach" w eksploratorze pakietów. Teraz spróbuj ponownie uruchomić program.

+0

yes i copied classes12.jar ad ojdbc14.jar –

+0

której wersji Oracle używasz 8i lub 10g –

+0

Używam Oracle 11g R2 –

14

Przejdź przez ścieżkę C:\apache-tomcat-7.0.47\lib (ta ścieżka może być różna w zależności od miejsca instalacji serwera Tomcat), a następnie za numerem ojdbc14.jar, jeśli nie zawiera.

Następnie zrestartuj serwer w Eclipse następnie uruchomić aplikację na serwerze

+0

+1 to rozwiązało problem dla mnie. –

+0

@Ravikumar D G: +1 również rozwiązało problem dla mnie. –

+0

Infact to genialny .. mój problem został rozwiązany –

0

I był już sam kinda błąd, ale po skopiowaniu ojdbc14.jar w folderze lib nie więcej wyjątków. (Skądś ojdbc14.jar skopiować i wkleić . to w folderze lib wewnątrz WebContent)

0

miałem ten sam problem, ale udało się go naprawić, wykonując następujące czynności:

prawym przyciskiem myszy na projekcie -> Właściwości, a następnie dodać JAR (odjbc6 lub 14) w zespole wdrażania.

+0

Twoja odpowiedź dotyczy konkretnego IDE i konfiguracji, ale uważam, że OP jest inny. Wydaje się również, że dodali ten słoik do swojej klasy. –

0

byłem coraz samą kinda błąd ale po kopiowanie ojdbc14.jar do folderu lib , nie więcej wyjątku. (Skopiuj ojdbc14.jar z gdzieś i wklej go w folderze lib wewnątrz WebContent.)

5

zespół! Aby wykonać zapytania SQL z serwletu należy dodać słoik biblioteki JDBC w folderze

WEB-INF/lib 

Po tym można nazwać kierowca, przykład:

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

Teraz Y można użyć połączenia DB-serwer

==> 73!

2

spróbować dodać ojdbc6.jar przez serwer lib "C: \ apache-tomcat-7.0.47 \ lib",

Następnie zrestartuj serwer w Eclipse.