从 Maven 运行声纳:找不到 SQL 驱动程序

Posted

技术标签:

【中文标题】从 Maven 运行声纳:找不到 SQL 驱动程序【英文标题】:Running Sonar from Maven: SQL driver not found 【发布时间】:2013-04-09 09:40:29 【问题描述】:

当我尝试启动 mvn sonar:sonar 时,我得到一个“找不到 SQL 驱动程序”

sorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110) ... 30 更多 原因:java.sql.SQLException: SQL driver not found org.h2.Driver 在 org.sonar.api.database.DriverDatabaseConnector.getConnection(DriverDatabaseConnector.java:87) 在 org.sonar.api.database.AbstractDatabaseConnector.testConnection(Abstr actDatabaseConnector.java:178) ... 36 更多 引起:java.lang.ClassNotFoundException:org.h2.Driver 在 java.net.URLClassLoader$1.run(URLClassLoader.java:202) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:190) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:306) 在 java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:627) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:247) 在 org.sonar.api.database.DriverDatabaseConnector.getConnection(DriverDa tabaseConnector.java:83) ... 37 更多

有人知道可能是什么原因和/或解决方案吗?

更新:

Sonar.properties 是默认值,原样 Maven 设置

    <profile>
        <id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.jdbc.driverClassName>org.h2.Driver</sonar.jdbc.driverClassName>
            <sonar.jdbc.url>jdbc:h2:tcp://localhost:9092/sonar</sonar.jdbc.url>  

            <!-- optional URL to server. Default value is http://localhost:9000 -->
            <sonar.host.url>
              http://localhost:9000
            </sonar.host.url>
        </properties>
    </profile>

【问题讨论】:

你的sonar.properties是什么样的? 请看docs.codehaus.org/display/SONAR/…你应该配置settings.xml文件,位于$MAVEN_HOME/conf~/.m2 您使用的是什么版本的声纳?你试过用 mvn -X 运行吗? 【参考方案1】:

Sonar 不再使用 Derby。您应该安装较新版本的 Sonar(如果可能的话是最新的 3.5)并清理您的配置,主要是所有“sonar.jdbc.*”属性。

【讨论】:

嗨,Fabrice,感谢您的思考!问题在于版本 3.5.1,全新安装(我不知道为什么它仍然尝试使用 Derby 驱动程序,也许是一些父 pom 问题?)。但无论如何,如果我将设置更改为 org.h2.Driver,问题仍然存在......【参考方案2】:

您可能必须使用依赖版本来匹配您的(Sonar 的?)H2 数据库,但请尝试将以下依赖添加到您的 POM:

<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.3.171</version>
    <scope>test</scope>
</dependency>

这应该使 Sonar 插件可以在构建期间使用该类,但不将其包含在您的工件中。

【讨论】:

谢谢。但仍然是“引起:java.lang.ClassNotFoundException:org.h2.Driver”。奇怪的是,当我运行独立的 Sonar Runner 时它确实工作,所以 H2 本身工作得很好。

以上是关于从 Maven 运行声纳:找不到 SQL 驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

java.sql.SQLException: 找不到适合 jdbc:sqlserver 的驱动程序... (intellij, maven)

从 setup.py 运行声纳扫描仪

H2 java.sql.SQLException:找不到合适的驱动程序

从 JAR 运行时“找不到合适的驱动程序”[重复]

即使通过 Maven 添加也找不到 JDBC 驱动程序

如何通过非 maven 项目的声纳的 junit 测试来测量代码覆盖率