java - Sonar runner (ubuntu) 执行失败 : com. mysql.jdbc.Driver

标签 java mysql jdbc sonarqube

我最近在运行 UBUNTU 的 Vagrant 机器上安装了 SONAR。 Sonar 服务运行良好,但当我尝试运行 sonar-runner 时,出现与 jdbc 连接器相关的错误。

我通过更改文件“sonar-runner.properties”将 Sonar 配置为与 mysql 数据库一起运行:

sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?seUnicode=true&characterEncoding=utf8
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

当尝试启动 sonar-runner 时,我得到以下输出:

$ sudo sonar-runner start -e
SonarQube Runner 2.3
Java 1.6.0_27 Sun Microsystems Inc. (64-bit)
Linux 3.2.0-23-generic amd64
INFO: Error stacktraces are turned on.
INFO: Runner configuration file: /home/vagrant/bin/sonar-runner/conf/sonar-runner.properties
INFO: Project configuration file: NONE
INFO: SonarQube Server 4.1.1
13:01:58.363 INFO  - Load batch settings
13:01:59.524 INFO  - User cache: /root/.sonar/cache
13:01:59.560 INFO  - Install plugins
13:02:03.309 INFO  - Install JDBC driver
13:02:03.618 INFO  - Create JDBC datasource for jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 43.846s
Final Memory: 2M/14M
INFO: ------------------------------------------------------------------------
ERROR: Error during Sonar runner execution
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
    at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
    at java.security.AccessController.doPrivileged(Native Method)
    at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
    at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
    at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
    at org.sonar.runner.api.Runner.execute(Runner.java:90)
    at org.sonar.runner.Main.executeTask(Main.java:70)
    at org.sonar.runner.Main.execute(Main.java:59)
    at org.sonar.runner.Main.main(Main.java:41)
Caused by: java.lang.IllegalStateException: Fail to connect to database
    at org.sonar.core.persistence.DefaultDatabase.start(DefaultDatabase.java:81)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110)
    at org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89)
    at org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84)
    at org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169)
    at org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132)
    at org.picocontainer.behaviors.Stored.start(Stored.java:110)
    at org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1015)
    at org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1008)
    at org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:766)
    at org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:91)
    at org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77)
    at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:92)
    at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:74)
    at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:622)
    at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87)
    ... 9 more
Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.jdbc.Driver'
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1429)
    at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1371)
    at org.apache.commons.dbcp.BasicDataSource.getLogWriter(BasicDataSource.java:1098)
    at org.apache.commons.dbcp.BasicDataSourceFactory.createDataSource(BasicDataSourceFactory.java:350)
    at org.sonar.core.persistence.DefaultDatabase.initDatasource(DefaultDatabase.java:142)
    at org.sonar.core.persistence.DefaultDatabase.start(DefaultDatabase.java:75)
    ... 32 more
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    at org.apache.commons.dbcp.BasicDataSource.createConnectionFactory(BasicDataSource.java:1420)
    ... 37 more
ERROR: 
ERROR: Re-run SonarQube Runner using the -X switch to enable full debug logging.

据我了解,未找到 jdbc 驱动程序。我认为在初始化过程中,sonar-runner 将获得所需的 jar(就像其他库一样)。

我尝试“sudo apt-get install libmysql-java”但仍然收到相同的错误消息。 如果这是正确的做法(我对此表示怀疑),我也许应该将 jar 添加到我的类路径中,但我不知道该 jar 实际下载到哪里以及如何将它添加到类路径中。

关于如何解决这个问题的任何想法?

谢谢!!

最佳答案

我看错地方了! 问题不是来自运行者,而是来自 SONAR 本身。我不得不更改 de sonar 配置文件 '/opt/sonar' 并重新启动它。在设置页面中,我现在可以看到 Sonar 正在 mysql 上运行。 我正面临与运行者有关的其他问题,但它与上述问题无关。

所以基本上确保 SONAR 和 SONAR-RUNNER 都配置为使用 mysql。

关于java - Sonar runner (ubuntu) 执行失败 : com. mysql.jdbc.Driver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127945/

相关文章:

java - Android Retrofit 无响应

mysql - 查找MySQL表中是否存在列数据

java - 无法从命令提示符使用 JAR 连接到 MS SQL Server 2008,但在 Eclipse 中成功运行

java - 如何将大块 JDBC 代码分成不同的类?

java - 如何使用 Mockito 和 JUnit 检查方法中的 if 语句?

java - org.springframework.beans.factory.BeanCreationException : Error creating bean with name - Spring security

运行命令时发现 Java 错误 javax/swing/text/GlyphView.getBreakSpot

mysql加入group by内的最小值

mysql - 分隔符在 MySQL 5.1 上不起作用

spring - 在Spring JDBC中通过JNDI获取JDBC连接