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

时间:2013-04-09 09:40:30

标签: maven sonarqube

当我尝试启动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驱动程序org.h2.Driver           at org.sonar.api.database.DriverDatabaseConnector.getConnection(DriverDatabaseConnector.java:87)
          at 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)           at java.security.AccessController.doPrivileged(Native Method)           在java.net.URLClassLoader.findClass(URLClassLoader.java:190)           at java.lang.ClassLoader.loadClass(ClassLoader.java:306)           at java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:627)           at 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>

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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