2012-07-07 4 views
2

에 대한 적절한 드라이버가 없습니다.이 문제로 인해 끔찍한 문제가 발생했습니다. 한 달 이상 프로젝트를 폐기했습니다.Tomcat 오류 : java.sql.SQLException : jdbc : sqlserver : //

java.sql.SQLException의 : JDBC에 대한 찾을 수 없습니다 적합 드라이버 ... 그러나 나는 아직도

은 그래서 내게이 오류를 던지고 ... 그것을 해결하고 프로젝트를 계속해야합니다 : sqlserver : //isd.ktu.lt : 1433; DatabaseName = LN2012_bakDB2 java.lang.NullPointerException

문제는 동일한 응용 프로그램이 deskto에서 작동한다는 것입니다. p version perfectlz하지만, 서버 (NetBeans 7.1.2의 Tomcat 7.0.22.0)에서 실행될 것으로 예상되는 버전의 경우 오류가 발생합니다. 그것은 여기 음 ... 그것은 풀링 드라이버를로드하지 못하거나 내가 알지도 못하는

을 보인다 책임이있는 부분 :

public DatabaseConnection(Parameters params) {     

    // parameters and the output     
    this.gui = params.getGui(); 

    // activate database pool 
    connectionPool = new GenericObjectPool(null); 
    connectionFactory = new DriverManagerConnectionFactory(params.getDbAdr(), params.getDbUser(), params.getDbPass()); 
    poolableConnectionFactory = new PoolableConnectionFactory(connectionFactory, connectionPool, null, null, false, true); 
    driver = new PoolingDriver(); 
    driver.registerPool("GenTreeDatabase", connectionPool); 
    //driver.registerPool("jdbc:apache:commons:dbcp:GenTreeDatabase", connectionPool);   

} 

public void openConn() { 
    if (allowOutput) gui.print("Getting connection to database"); 
    try { 
     con = DriverManager.getConnection("jdbc:apache:commons:dbcp:GenTreeDatabase"); 
     if (con != null) { 
      if (allowOutput) gui.print("Connection to database was successful"); 
     } 
    } catch (SQLException ex) { 
     gui.err(specificError + "Error getting connection to database - " + ex); 
    } 
} 

그것은 그것이를 얻기 위해 시도하는 시점에서 발생 연결이 성공적으로 검색되지 않기 때문에 널 포인터 예외가 발생합니다.

나는이 순간까지 Tomcat에 익숙하지 않다. Netbeans는 바람둥이를 잘 처리했다. ... 물건은 내가 이런 오류를 싫어한다. 너는 3 일 만에 그것을 풀지 않으면 너는 그렇게된다. 좌절하고 그걸로 돌아가고 싶지 않다면, 벽을 치는 것 같은 기분이 들지 ... 나는 그것에 대해 많은 검색을 시도했지만 여전히 많은 도움이되지 못했습니다 ... 그래서 저는 정말로 다행이 누군가 나를 도와 줄 수 있다면. 감사. :)

+0

스택 트레이스를 표시하십시오! – home

+1

Tomcat 디렉토리에 데이터베이스 드라이버 (예 : sqljdbc4.jar)가 있습니까? –

+0

@MartinWilson 그것은 C : \ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib –

답변

2

JDBC 드라이버의 jar를 $ CATALINA_HOME/lib에 복사해야합니다.

+0

안녕하세요, Catalina_home/lib은 어디에서 찾을 수 있습니까? 또한 문제가 있습니다. 그러나 톰캣은 폴더가없는 것 같아요. 어디에서 찾을 수 있습니까? –

+0

지금 바로이 파일이 있습니다 : C : \ Program Files \ Apache Software Foundation \ Apache Tomcat 7.0.22 \ lib Apache는이 tomcat 폴더를 사용하며 sqlijdbc4.jar 파일이 있습니다. –

+0

데이터베이스 주소를 바꾸면 어떻게됩니까? : jdbc : microsoft : sqlserver : //isd.ktu.lt : 1433; DatabaseName = LN2012_bakDB2 – mabbas

0

이 질문에 대답하기에는 너무 늦을 지 모르지만 비슷한 문제를 해결하기 위해 여기에 나와 있습니다.

빠른 솔루션 :

복사는 JDBC-driver JAR file (가 C:\Program Files\Java\jdk1.7.0_80\jre\lib\ext이었다 나를 위해 ) $JAVA_HOME/jre/lib/ext에 (광산은 ojdbc6했다).

세부 사항 :

 Bootstrap 
     | 
     System 
     | 
     Common 
    / \ 
Webapp1 Webapp2 ... 

각 클래스 : Tomcat이 시작 Apache Tomcat 7 documentations에 따르면, 다음의 부모 - 자식 관계로 구성되어 클래스 로더의 집합을 생성

loader, 디렉토리의 JAR 파일을 검색합니다. 그들이 볼 수 있도록 클래스와 자원은 아래에 설명되어 있습니다 :

부트 스트랩 :이 클래스 로더는 시스템 확장 디렉토리 $JAVA_HOME/jre/lib/ext에 존재하는 JAR 파일에서 JVM에서 제공되는 기본 런타임 클래스, 플러스 어떤 클래스가 포함되어 있습니다.

시스템 :이 클래스 로더는 일반적으로 CLASSPATH 환경 변수의 내용에서 초기화됩니다. 이러한 모든 클래스는 Tomcat 내부 클래스와 웹 응용 프로그램 모두에서 볼 수 있습니다. 그러나 Tomcat에는 몇 가지 예외가 있습니다.

공용 :이 클래스 로더에는 Tomcat 내부 클래스와 모든 웹 응용 프로그램에서 볼 수있는 추가 클래스가 포함되어 있습니다. 이 클래스 로더는 jar 파일의 경우 $CATALINA_BASE/lib$CATALINA_Home/lib으로 표시됩니다 (기본값).

웹 응용 프로그램 : 단일 Tomcat 인스턴스에 배포 된 각 웹 응용 프로그램에 대해 클래스 로더가 만들어집니다. 웹 애플리케이션의 /WEB-INF/classes 디렉토리에있는 모든 플러스 클래스와 리소스 외에도 웹 애플리케이션의 /WEB-INF/lib 디렉토리 아래의 JAR 파일에있는 클래스와 리소스가이 웹 애플리케이션에서 볼 수 있지만 다른 애플리케이션에서는 볼 수 없습니다.

  • 은 결론적으로, 부트 스트랩 수준에서 볼 얻을 것이다, $JAVA_HOME/jre/lib/ext 내부 ojdbc JAR 파일 JDBC 드라이버를 넣어 구입할 수 있습니다.