it-swarm.com.ru

ClassNotFoundException Oracle.jdbc.driver.OracleDriver только в сервлете, используя Eclipse

Приведенный ниже код завершается ошибкой:

Class.forName("Oracle.jdbc.driver.OracleDriver");

с ошибкой: 

Java.lang.ClassNotFoundException: Oracle.jdbc.driver.OracleDriver

Два printlns печать:

Wed_Jun_22_11:18:51_PDT_2005
false

Это заставляет меня думать, что класс существует и его можно найти. Также этот точно такой же класс работает в приложении без сервлетов.

Я перезагружал все несколько раз и обновлял приложение/сервлет несколько раз. Все значения были жестко запрограммированы, чтобы сделать его простым и коротким. 

private static Connection getDBConnection() throws Exception {
    System.out.println(Oracle.jdbc.driver.OracleDriver.BUILD_DATE);
    System.out.println(Class.class.desiredAssertionStatus());
    //load the driver
    Class.forName("Oracle.jdbc.driver.OracleDriver");

    return DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}

полный сервлет, который не работает:

package servletClass_3;

import Java.io.IOException;
import Java.sql.Connection;
import Java.sql.DriverManager;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class OneMoreBookStore
 */
@WebServlet("/OneMoreBookStore")
public class OneMoreBookStore extends HttpServlet {

    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    private static Connection getDBConnection() throws Exception {

        System.out.println(Oracle.jdbc.driver.OracleDriver.BUILD_DATE);
        System.out.println(Class.class.desiredAssertionStatus());

        //load the driver
        Class.forName("Oracle.jdbc.driver.OracleDriver");
        return DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try
        {
            Connection con = getDBConnection();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Это приложение работает:

package servletClass_3;

import Java.sql.Connection;
import Java.sql.DriverManager;

public class DBConnect {

    private static Connection getDBConnection() throws Exception {
        System.out.println(Oracle.jdbc.driver.OracleDriver.BUILD_DATE);
        System.out.println(Class.class.desiredAssertionStatus());

        //load the driver
        Class.forName("Oracle.jdbc.driver.OracleDriver");
        return DriverManager.getConnection("jdbc:Oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
    }
    public static void main(String[] args) {
        try
        {
            Connection con = getDBConnection();
            System.out.println("connection worked");
            con.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }

}

Я использую:

  • Eclipse JavaEE 1.4.2
  • Tomcat 7
  • jdk1.7
  • Oracle 11g R2
  • Windows 7 64bit
7
Geoff

Возможно, вы не развертываете драйвер Oracle вместе со своим приложением.

У вас есть несколько вариантов:

  • Вы можете поместить банки с драйверами в папку WEB-INF/lib
  • Вы экспортируете это вместе со своей заявкой. -> Щелкните правой кнопкой мыши на Project -> Build Path-> Configure Build Path... -> Order and Export -> Проверьте драйверы.
  • Поместите банки с драйверами в общую папку или папку расширения библиотеки вашего сервера приложений. (Вы должны пойти с вариантом один или два, хотя.)
11
Udo Held

Вы должны включить файл ojdbc6.jar в сборку развертывания проекта ...

  1. выберите веб-проект, который содержит файл JSP ...

  2. выберите Проект вкладка в строке меню в Eclipse

  3. выберите свойства в выпадающем меню

  4. выберите Развертывание сборки

  5. Добавьте в него свой файл ojdbc6.jar.

7
sri

Попробуйте это, измените Oracle.jdbc.driver.OracleTypes на Oracle.jdbc.OracleTypes

0
user1250206