【问题标题】:Gerrit JDBC Driver not found未找到 Gerrit JDBC 驱动程序
【发布时间】:2015-06-21 14:41:35
【问题描述】:

我在 Linux Mint 机器上安装了 gerrit,我正在尝试使用 mysql 数据库连接进行 HTTP 身份验证。 但是当我尝试启动gerrit时,出现以下错误:

ERROR com.google.gerrit.pgm.Daemon : Unable to start daemon
com.google.gerrit.common.Die: Cannot connect to SQL database
at com.google.gerrit.pgm.util.AbstractProgram.die(AbstractProgram.java:88)
at com.google.gerrit.pgm.util.SiteProgram.createDbInjector(SiteProgram.java:158)
at com.google.gerrit.pgm.Daemon.start(Daemon.java:275)
at com.google.gerrit.pgm.Daemon.run(Daemon.java:204)
at com.google.gerrit.pgm.util.AbstractProgram.main(AbstractProgram.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.google.gerrit.launcher.GerritLauncher.invokeProgram(GerritLauncher.java:166)
at com.google.gerrit.launcher.GerritLauncher.mainImpl(GerritLauncher.java:93)
at com.google.gerrit.launcher.GerritLauncher.main(GerritLauncher.java:50)
at Main.main(Main.java:25)
Caused by: java.sql.SQLException: Driver class com.mysql.jdbc.Driver not available
at com.google.gwtorm.jdbc.SimpleDataSource.loadDriver(SimpleDataSource.java:171)
at com.google.gwtorm.jdbc.SimpleDataSource.<init>(SimpleDataSource.java:85)
at com.google.gerrit.server.schema.DataSourceProvider.open(DataSourceProvider.java:144)
at com.google.gerrit.server.schema.DataSourceProvider.get(DataSourceProvider.java:65)
at com.google.gerrit.pgm.util.SiteLibraryBasedDataSourceProvider.get(SiteLibraryBasedDataSourceProvider.java:52)
at com.google.gerrit.pgm.util.SiteLibraryBasedDataSourceProvider.get(SiteLibraryBasedDataSourceProvider.java:32)
at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:86)
at com.google.inject.internal.BoundProviderFactory.provision(BoundProviderFactory.java:73)
at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:66)
at com.google.inject.internal.BoundProviderFactory.get(BoundProviderFactory.java:63)
at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1066)
at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
at com.google.inject.Scopes$1$1.get(Scopes.java:65)
at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1059)
at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:110)
at com.google.inject.Guice.createInjector(Guice.java:96)
at com.google.gerrit.pgm.util.SiteProgram.createDbInjector(SiteProgram.java:152)
... 11 more
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at com.google.gwtorm.jdbc.SimpleDataSource.loadDriver(SimpleDataSource.java:168)
... 33 more

我在/usr/share/java 中复制了mysql-connector-java-5.1.28.jar,但这个错误仍然存​​在。

谁能给我指个方向?

【问题讨论】:

  • 属于 Gerrit lib/ 文件夹的 Iirc,不是吗?
  • lib/ 文件夹是什么意思?通用 lib 或其他类型的 lib 文件夹?
  • 这可能是我当前安装的错误或其他问题,但没有为 gerrit 创建 lib 文件夹。如果我会重新安装并再次检查。谢谢
  • 这是我们/var/gerrit/review/lib文件夹的内容:bcpkix-jdk15on-1.49.jar bcpkix-jdk15on-149.jar bcprov-jdk15on-1.49.jar bcprov-jdk15on-149.jar mysql-connector-java-5.1.10.jar mysql-connector-java-5.1.21.jar
  • StephenKing,请将此作为答案发布,因为它正在工作。谢谢

标签: java mysql linux jdbc gerrit


【解决方案1】:

最好不要动/usr/share/java。下次升级时,您放在那里的任何东西都会丢失。相反,为您的驱动程序定义您自己的公共位置。如果它只适合您,您的家庭位置的子目录可能会很好:mkdir ~/jdbc

然后将您的 .jar 复制到该位置以用于您的 jdbc 驱动程序。

然后,根据您运行 java 代码的方式,您必须弄清楚如何将 jar 包含到类路径中。

  1. 独立 java 程序以命令行java 启动,然后使用-cp 参数选项。
  2. Tomcat 或 Weblogic 等应用程序服务器请参阅其文档。请注意,许多人建议在应用服务器安装中放置一个放置位置,但出于与/usr/share/java 相同的原因,我建议不要这样做。实际上,tomcat 允许您将 CATALINA_HOME 从 CATALINA_BASE 中分离出来以解决该问题。

无论哪种方式,异常似乎是从简单的main 生成的,而不是网络应用程序,所以我假设您可以选择第一个选项。

【讨论】:

  • 最好不要动/usr/share/java。但是我应该在哪里/或如何安装 mysql 库,以便gerrit 能够连接到 mysql 数据库?
猜你喜欢
  • 1970-01-01
  • 2012-04-13
  • 2020-03-08
  • 2014-03-13
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 2013-03-05
相关资源
最近更新 更多