gpt4 book ai didi

java - maven可部署jar "java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver"错误

转载 作者:行者123 更新时间:2023-12-02 02:44:54 26 4
gpt4 key购买 nike

我有一个可部署的 Maven 项目,我正在尝试使用 JDBC 连接到 Hive 服务器。这是我的 pom 文件:

<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc -->
<dependency>
<groupId>org.apache.hive</groupId>
<artifactId>hive-jdbc</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.test.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>

这会生成一个 jar 文件,其中包含一个 list .mf,如下所示:

Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Built-By: test
Class-Path: hive-jdbc-2.1.1.jar hive-common-2.1.1.jar ...
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_72
Main-Class: com.test.Main

现在,当我尝试使用 java -jar test.jar 运行 jar 文件时,我得到了

java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver
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)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)

即使在 list 文件的类路径中正确配置了 jar 文件,为什么我也会收到此异常?

谢谢。

最佳答案

java似乎找不到依赖项中引用的jar。可能与目标 jar 不在同一文件夹中。

根据可部署 Maven 项目的含义,您有几种可能的解决方案

  • 将依赖项添加到容器的类路径
  • 构建一个包含依赖项的“胖”jar(使用 Maven 阴影或程序集插件)

关于java - maven可部署jar "java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44755803/

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