Spring Boot无法加载驱动程序类:oracle.jdbc.OracleDrive。

4

我在我的jar中的类路径中拥有驱动程序类:

2015-06-18 12:21:40.290 信息 9453 --- [主要] .b.l.ClasspathLoggingApplicationListener:应用程序无法使用类路径启动: ..... jar:file:/{projecthome}/rest-test/target/rest-test-0.1.0.jar!/lib/ojdbc6-11.2.0.3.0.jar!/]

我得到了异常:

Factory method 'dataSource' threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: oracle.jdbc.OracleDrive

我的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.springframework</groupId>
    <artifactId>rest-test</artifactId>
    <version>0.1.0</version>
    <packaging>jar</packaging>

    <properties>        
        <start-class>hello.Application</start-class>
        <java.version>1.8</java.version>
    </properties>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.2.4.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-dbcp</artifactId>
            <version>${tomcat.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>                
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3.0</version>
            <scope>compile</scope>
        </dependency>                
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <showDeprecation>true</showDeprecation>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-releases</id>
            <url>https://repo.spring.io/libs-release</url>
        </pluginRepository>
    </pluginRepositories>
    <name>rest-test</name>
</project>

1
没有这样的类,你在结尾缺少了一个 r - M. Deinum
4个回答

2
从Oracle网站下载ojdbc6.jar,或者如果您在本地系统上安装了oracle11g,则可以在jdbc/lib文件夹中找到ojdbc。
将ojdbc.jar添加到右键单击 ->构建路径 ->配置构建路径 ->添加外部jar ->您的本地机器ojdbc路径 ->确定。
在我的情况下有效。

2
步骤1:您的POM.xml文件应为
<dependency>
     <groupId>com.oracle</groupId>
     <artifactId>ojdbc6</artifactId>
     <version>11.2.0</version>
</dependency>

步骤2:从Oracle网站下载ojdbc6驱动程序并将其保存在本地计算机上。

步骤3:运行以下maven命令。Dfile是我从Oracle网站下载的jar文件的位置:

mvn install:install-file -Dfile=C:\Users\santosh\.m2\repository\com\oracle\ojdbc6\11.2.0\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

运行maven命令后,它应该在您的maven存储库中创建ojdbc6-11.2.0。然后您的问题应该得到解决。


1

确保在您的IDE中,如果没有自动重新导入(例如:IntelliJ:右键单击项目,Maven,重新导入),请点击maven重新导入。这将在不在类路径上的情况下编译成功,但在运行时失败。


0
  1. 在pom.xml中按照Santosh的指示添加依赖项。

  2. 在Eclipse IDE中,右键单击您的项目并选择--运行为--Maven build...--在Goals中提供以下行并运行。我刚刚删除了mvn并指向了我的本地机器上ojdbc6.jar的位置。

install:install-file -Dfile=D:\oracle11gXE\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0 -Dpackaging=jar

  1. 再次在Eclipse IDE中,右键单击您的项目并选择--Maven--更新项目...--选择强制更新快照/发布以及其他默认选项,然后单击确定。

  2. ojdbc6-11.2.0.jar应该反映在Maven Dependencies下。


编辑你的答案并使用方括号为代码示例澄清问题。 - maciejwww
2
最新的JDBC驱动程序是19.7版本,可以在中央Maven上获取。建议使用该版本。更多信息请参考此页面。(https://www.oracle.com/database/technologies/maven-central-guide.html) <groupId>com.oracle.database.jdbc<groupId> <artifactId>ojdbc8</artifactId> <version>19.7.0.0</version> - Nirmala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接