2014-03-02 32 views
1

我最近在運行UBUNTU的Vagrant框中安裝了SONAR。 聲納服務運行良好,但是當我嘗試運行sonar-runner時,出現與jdbc連接器有關的錯誤。Sonar runner(ubuntu)執行失敗:com.mysql.jdbc.Driver

我配置聲納通過更改文件「sonar-runner.properties」 mysql數據庫來運行:

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

當試圖啓動聲納亞軍我得到下面的輸出:

$ 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驅動程序。我認爲在初始化期間,聲納運動員將獲得所需的jar(就像其他庫一樣)。

我試着「sudo apt-get install libmysql-java」但仍然得到相同的錯誤信息。 如果這是正確的事情(我懷疑),我應該可能將jar添加到我的類路徑中,但我不知道該jar實際下載的位置以及如何將其添加到類路徑。

任何想法如何得到解決?

謝謝!

+0

好吧,我發現的mysql.jar在/ usr/share/java目錄。即使添加到CLASSPATH中也沒有任何變化.. – LEM01

+1

我正在看錯地方!問題不是來自賽跑者,而是來自SONAR本身。 我必須更改de sonar配置文件'/ opt/sonar'並重新啓動它。在設置頁面中,我現在可以看到聲納在MySQL上運行。我面對跑步者的另一個問題,但它與上述問題無關。 所以基本上確保SONAR和SONAR-RUNNER都配置爲使用mysql。 – LEM01

回答

4

我正在看錯地方! 問題不是來自賽跑者,而是來自SONAR本身。我必須更改de sonar配置文件'/ opt/sonar'並重新啓動它。在設置頁面中,我現在可以看到聲納在MySQL上運行。 我面對跑步者的另一個問題,但它與上述問題無關。

所以基本上要確保SONAR和SONAR-RUNNER都配置爲使用mysql。

+0

你好LEM01:你能告訴你在/ opt/sonar配置中改變了什麼嗎?我也面臨同樣的問題... –

+0

我不再使用這個設置,它已經超過一年了..不記得對不起。我假設有一些配置允許你定義聲納和聲納運行者需要與mysql交談,並且都必須設置。 – LEM01

+0

沒問題..我修好了。謝謝 –

2

我有同樣的問題。問題是mysql JDBC連接器不在我的bash_profile中。 所以我加上的.bash_profile:

出口mysql的jdbc連接器類路徑

export CLASSPATH=${HOME}/sonar/mysql-connector-java-5.1.23/mysql-connector-java-5.1.23-bin.jar:$CLASSPATH 

希望它可以幫助

+0

如何在Linux中導出CLASSPATH ...我其實不知道如何使用您的解決方案。 –