没有找到合适的驱动器,包括用行家组装-插件[重复]所需的驱动程序时(No suitable driv

2019-06-27 22:12发布

可能重复:
Java错误(没有找到合适的驱动程序)

我有一个非常小的也与一个PostgreSQL数据库的工作,这将是把它当作一个罐子很方便。 因此,我们确实我使用Maven的组装插件像这样尝试:

<artifactId>maven-assembly-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>pack.name.MainClass</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>

它工作完全正常,我可以看到所有我需要添加到该JAR文件中的文件,包括司机在内的文件,但是当我试图运行它,我得到一个:

java.sql.SQLException: No suitable driver found for jdbc:postgresql://<ip>:5432/dbname

我有这个:

<dependencies>
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc6</artifactId>
            <version>11.2.0.3</version>
        </dependency> 
        <dependency>
            <groupId>postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.1-901-1.jdbc4</version>
        </dependency>

在依赖和URL是完全按照我上面写的(除审查地址:))。 我在想什么?

谢谢!

Answer 1:

如果你不使用Class.forName(...)手动加载驱动程序,那么我认为你面临着一个臭名昭著的问题maven-assembly-plugin -它会覆盖文件具有相同的名称时,他们来自不同的jar秒。

在你的情况JDBC驱动程序发现机制依赖于一个名为/META-INF/services/java.sql.Driver ,你至少有两个jar小号包含这样的文件,你的依赖(Oracle和Postgres的驱动程序),因此一它们运行后会丢失maven-assembly-plugin

您可以使用maven-shade-plugin ,而不是maven-assembly-plugin ,以正确地将合并这些文件,描述在这里 。

另外,您也可以使用Class.forName(...)回避失败的发现机制。



文章来源: No suitable driver found when including the needed drivers with maven-assembly-plugin [duplicate]