gpt4 book ai didi

java - 如何在连接时避免在 Eclipse 中与多个 JDBC 驱动程序发生 JAR 冲突?

转载 作者:行者123 更新时间:2023-11-29 04:22:14 29 4
gpt4 key购买 nike

我的代码正在调用两个不同的有点模糊的 JDBC 连接。这些 JARS 与 Jethro 和 Impala 有关,但我认为这对这个问题无关紧要。如果我单独为 Jethro 添加外部 JAR,它就可以工作。 Impala 也一样。但是,如果我同时添加 Jethro 和 Impala 外部 jar ,我似乎会发生碰撞。我希望能够在同一程序空间中调用任一 JDBC 库。出现以下异常:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/thrift/protocol/TProtocol
at com.cloudera.impala.impala.core.ImpalaJDBCDriver.<clinit>(ImpalaJDBCDriver.java:24)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.cloudera.impala.dsi.core.impl.DSIDriverFactory.createDriver(DSIDriverFactory.java:52)
at com.cloudera.impala.jdbc.common.AbstractDriver.doInitialize(AbstractDriver.java:471)
at com.cloudera.impala.jdbc.common.AbstractDriver.connect(AbstractDriver.java:207)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at TestConnect.main(TestConnect.java:20)
Caused by: java.lang.ClassNotFoundException: org.apache.thrift.protocol.TProtocol
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

最佳答案

这已经解决了。本质上,我没有 Impala 的所有依赖 JAR。我认为这无关紧要,因为我正在调用 Jethro。这确实很重要。

添加以下 jars 确实可以正常工作。为 Maven 打一分。如果我使用 Maven,就不会发生这种情况。为了后代的缘故,这里是依赖的 JARS:

  • libfb303
  • 自由节俭
  • log4j
  • TCLI服务客户端

关于java - 如何在连接时避免在 Eclipse 中与多个 JDBC 驱动程序发生 JAR 冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48386448/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com