복붙노트

[SPRING] 적절한 드라이버가 발견되지 않았습니다.

SPRING

적절한 드라이버가 발견되지 않았습니다.

내가 만든 DAO 단위 테스트 (JUnit) 노력하고있어. Spring을 프레임 워크로 사용하고 DAO (JdbcPackageDAO)는 SimpleJdbcDaoSupport를 확장합니다. 테스트 클래스 (JdbcPackageDAOTest)는 AbstractTransactionalDataSourceSpringContextTests를 확장합니다. 다음과 같이 configLocations를 재정의했습니다.

protected String[] getConfigLocations(){
    return new String[] {"classpath:company/dc/test-context.xml"};
}

내 test-context.xml 파일은 다음과 같이 정의됩니다.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="dataPackageDao" class="company.data.dao.JdbcPackageDAO">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
        <property name="url" value="jdbc:hsqldb:hsql://localhost"/>
        <property name="username" value="sa" />
        <property name="password" value="" />
    </bean>

    <bean id="propertyConfigurer" 
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
                <value>company/data/dao/jdbc.properties</value>
            </list>
        </property>
    </bean>

    <bean id="transactionManager" 
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>

내 백엔드로 HSQL을 사용하고 있으며 독립 실행 형 모드로 실행 중입니다. 내 IDE는 일식입니다. 클래스를 JUnit 테스트로 실행하면 여기에 오류가 발생합니다 (아래). 왜 그런 일이 일어나는가에 대한 단서가 없습니다. Eclipse에 따라 hsql.jar이 빌드 경로에 있습니다.

org.springframework.transaction.CannotCreateTransactionException: Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: No suitable driver found for jdbc:hsqldb:hsql://localhost
    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:219)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:377)
    at org.springframework.test.AbstractTransactionalSpringContextTests.startNewTransaction(AbstractTransactionalSpringContextTests.java:387)
    at org.springframework.test.AbstractTransactionalSpringContextTests.onSetUp(AbstractTransactionalSpringContextTests.java:217)
    at org.springframework.test.AbstractSingleSpringContextTests.setUp(AbstractSingleSpringContextTests.java:101)
    at junit.framework.TestCase.runBare(TestCase.java:128)
    at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:76)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:120)
    at junit.framework.TestSuite.runTest(TestSuite.java:230)
    at junit.framework.TestSuite.run(TestSuite.java:225)
    at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: java.sql.SQLException: No suitable driver found for jdbc:hsqldb:hsql://localhost
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:291)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:277)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnectionFromDriverManager(DriverManagerDataSource.java:259)
    at org.springframework.jdbc.datasource.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:241)
    at org.springframework.jdbc.datasource.DataSourceTransactionManager.doBegin(DataSourceTransactionManager.java:182)
    ... 18 more

해결법

  1. ==============================

    1.HSQLDB 자체를 등록하려면 jdbcDriver 클래스에 액세스해야합니다. 이 예제에서와 같은 방식으로이 작업을 수행 할 수 있습니다.

    HSQLDB 자체를 등록하려면 jdbcDriver 클래스에 액세스해야합니다. 이 예제에서와 같은 방식으로이 작업을 수행 할 수 있습니다.

    Class.forName("org.hsqldb.jdbcDriver");
    

    jdbcDriver 클래스의 정적 초기화를 트리거합니다.

    static {
        try {
            DriverManager.registerDriver(new jdbcDriver());
        } catch (Exception e) {}
    }
    
  2. ==============================

    2."적합한 드라이버 없음"은 대개 연결 URL의 구문이 잘못되었음을 의미합니다.

    "적합한 드라이버 없음"은 대개 연결 URL의 구문이 잘못되었음을 의미합니다.

  3. ==============================

    3.좋습니다, 해결책이 있습니다. 대부분의 사람들은 정말로 좋은 점을 만들었지 만 누구도 문제를 해결하지 못했습니다 (도움에 감사드립니다). 여기에 내가 찾은 해결책이있다.

    좋습니다, 해결책이 있습니다. 대부분의 사람들은 정말로 좋은 점을 만들었지 만 누구도 문제를 해결하지 못했습니다 (도움에 감사드립니다). 여기에 내가 찾은 해결책이있다.

    내 생각 엔 Ganymede가 / web-inf / lib 폴더에서 jar 파일을 읽는 방법과 관련이 있다는 것입니다. 하지만 누가 알 겠어 ... 지금은 효과가있어.

  4. ==============================

    4.원래 연결 문자열을 보면 :

    원래 연결 문자열을 보면 :

    <property name="url" value="jdbc:hsqldb:hsql://localhost"/>
    

    Hypersonic 문서는 localhost 다음에 별칭이 누락되었다고 제안합니다.

    http://hsqldb.org/doc/guide/ch04.html

  5. ==============================

    5.연결할 데이터베이스 이름을 지정하지 않은 것 같습니다. 다음과 같이 연결해야합니다.

    연결할 데이터베이스 이름을 지정하지 않은 것 같습니다. 다음과 같이 연결해야합니다.

    jdbc:hsqldb:hsql://serverName:port/DBname
    
  6. ==============================

    6.위대한 나는 비슷한 문제가 있었다. 모든 것에 대한 조언은 jdbc url sintax를 확인하는 것입니다.

    위대한 나는 비슷한 문제가 있었다. 모든 것에 대한 조언은 jdbc url sintax를 확인하는 것입니다.

  7. ==============================

    7.드라이버 (org.hsqldb.jdbcDriver)를 소스 파일 중 하나로 가져올 수 있습니까? (클래스가 실제로 클래스 경로에 있는지 테스트합니다.)

    드라이버 (org.hsqldb.jdbcDriver)를 소스 파일 중 하나로 가져올 수 있습니까? (클래스가 실제로 클래스 경로에 있는지 테스트합니다.)

    가져올 수 없으면 빌드 경로에 hsqldb.jar을 포함시켜보십시오.

  8. ==============================

    8.나는 spring, commons-dbcp, oracle 10g에서 같은 문제가 있었다. 이 URL을 사용하면 '적절한 드라이버 없음'오류가 발생합니다. jdbc : oracle : thin@192.168.170.117 : 1521 : kinangop

    나는 spring, commons-dbcp, oracle 10g에서 같은 문제가 있었다. 이 URL을 사용하면 '적절한 드라이버 없음'오류가 발생합니다. jdbc : oracle : thin@192.168.170.117 : 1521 : kinangop

    위 URL에 @ 기호 바로 앞에 콜론이 없습니다. 오류를 수정 한 후 오류가 사라졌습니다.

  9. ==============================

    9.정적 메인 메서드를 사용하여 데이터 소스 연결을 실행하려고하면 먼저 데이터베이스 연결을 실행해야합니다. 우리는 이클립스에서 성취 할 수 있습니다.

    정적 메인 메서드를 사용하여 데이터 소스 연결을 실행하려고하면 먼저 데이터베이스 연결을 실행해야합니다. 우리는 이클립스에서 성취 할 수 있습니다.

    1) 기본적으로 작업 공간을 연 후 임의의 IDE (Eclipse 또는 RAD)를 엽니 다. IDE는 JAVA에서 열립니다. 가상 데이터베이스 연결뿐만 아니라 데이터 소스를 만들려면 장래성있는 Java에서 데이터베이스로 전환하십시오.

    2) 데이터베이스에서 특정 스키마의 userName, Password 및 URL과 같은 모든 세부 정보를 입력하십시오.

    3) 데이터베이스에 액세스하기 위해 main 메소드를 실행하십시오.

    그러면 "serverName undefined"가 해결됩니다.

  10. ==============================

    10.이전에 어떤 사람들이 대답했듯이이 코드는 문제를 해결했습니다.

    이전에 어떤 사람들이 대답했듯이이 코드는 문제를 해결했습니다.

    Class.forName("org.hsqldb.jdbcDriver");
    

    하지만 내 애플 리케이션은 일부 tomcats에서 실행되고 있지만 한 번만이 코드를 추가해야했다.

  11. ==============================

    11.그것은

    그것은

    파일로 해석 될 수 없습니다. 여기에서 샘플 프로그램을보십시오.

    샘플 HSQLDB 프로그램

    그 작업을 먼저 할 수 있는지 확인한 다음, 해당 구성 정보를 가져 와서 Spring bean 구성에서 사용할 수 있는지 확인하십시오.

    행운을 빕니다!

  12. ==============================

    12.귀하의 HSQL URL이 잘못되었다고 생각합니다. 또한 데이터베이스 이름,

    귀하의 HSQL URL이 잘못되었다고 생각합니다. 또한 데이터베이스 이름,

    그래서 뭔가

    jdbc:hsqldb:hsql://localhost/mydatabase 
    

    mydatabase가 DB (파일)의 이름 인 경우. 이것을 포함해서는 안됩니다 (여기에 해당되는지 확실하지 않습니다) URL 파싱을 혼동하여 DriverManagerDS가 드라이버가 적합하지 않다고 생각할 수 있습니다 (발견되었지만 좋지 않다고 생각합니다) 하나)

  13. ==============================

    13.그게 가치가 있는지 모르겠지만 비슷한 문제가 "java.sql.SQLException : 적절한 드라이버를 찾을 수 없습니다"오류가 발생했습니다. 솔루션을 연구하는 동안이 스레드를 발견했습니다.

    그게 가치가 있는지 모르겠지만 비슷한 문제가 "java.sql.SQLException : 적절한 드라이버를 찾을 수 없습니다"오류가 발생했습니다. 솔루션을 연구하는 동안이 스레드를 발견했습니다.

    문제를 해결하는 방법은 java.sql.DriverManager를 사용하여 연결을 끊지 않고 대신 org.hsqldb.jdbc.jdbcDataSource의 인스턴스를 작성하여 사용하는 것입니다.

    내 문제의 근본 원인은 클래스 로더 계층과 JRE가 Java 5를 실행하고 있다는 사실과 관련이 있습니다. jdbcDriver 클래스를 성공적으로로드 할 수는 있지만 java.sql.DriverManager 뒤에있는 클래스 로더가 더 높았습니다. 내가 필요한 hsqldb.jar을 볼 수 없었던 시점까지.

    어쨌든 누군가 다른 사람이 비슷한 문제로 넘어지면이 메모를 여기에 넣으십시오.

  14. ==============================

    14.나는 비슷한 문제에 직면했다. 놀랍게도이 문제는 Java 버전에 있었다. rt.jar에서 java.sql.DriverManager가 발생하여 "COM.ibm.db2.jdbc.app.DB2Driver"드라이버를로드 할 수 없습니다.

    나는 비슷한 문제에 직면했다. 놀랍게도이 문제는 Java 버전에 있었다. rt.jar에서 java.sql.DriverManager가 발생하여 "COM.ibm.db2.jdbc.app.DB2Driver"드라이버를로드 할 수 없습니다.

    나는 jdk 5와 jdk 6에서 업그레이드했고 효과가있었습니다.

  15. ==============================

    15.경우에 따라 사용 권한 (소유권)을 확인하십시오.

    경우에 따라 사용 권한 (소유권)을 확인하십시오.

  16. from https://stackoverflow.com/questions/160611/cause-of-no-suitable-driver-found-for by cc-by-sa and MIT license