You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java11打包Jar在Linux运行报ClassNotFoundException求助

排查java.lang.ClassNotFoundException: org.apache.hive.jdbc.HiveDriver问题

下面是几种常见的原因和解决方向:

  • 依赖未被打包进Jar文件
    本地IntelliJ运行时会自动加载项目依赖的Hive JDBC包,但默认的Maven/Gradle打包只会将你自己的代码打进Jar,不会包含第三方依赖。可以通过以下方式解决:

    • 用Maven的maven-shade-plugin或Gradle的shadowJar插件,配置将所有依赖合并到一个可执行Jar中;
    • 如果不合并Jar,可将Hive JDBC及相关依赖Jar放在目标Jar同目录,用java -cp "test.jar:hive-jdbc-*.jar:其他依赖.jar" 你的主类全路径命令运行。
  • 依赖版本不匹配或缺失
    确认本地开发使用的Hive JDBC依赖版本与Linux环境的Hive集群版本一致,比如Hive 3.x版本要对应hive-jdbc-3.x.x.jar,版本不兼容会导致类结构不匹配或缺失。同时检查依赖包是否完整,有没有遗漏Hive JDBC的传递依赖(比如Hadoop客户端、commons-logging等)。

  • Jar的MANIFEST.MF配置错误
    如果用java -jar运行,需检查MANIFEST.MF文件:

    • Main-Class是否正确指定了你的主类全路径;
    • Class-Path是否正确配置了依赖Jar的相对路径(如果依赖Jar和目标Jar同目录,可写hive-jdbc-xxx.jar,多个依赖用空格分隔)。若路径配置错误,JVM无法找到依赖类。
  • Linux环境类加载路径冲突
    Linux系统的CLASSPATH环境变量可能包含了其他版本的Hive相关Jar,导致类加载冲突。可以在运行时加上-Djava.system.class.loader=sun.misc.Launcher$AppClassLoader强制使用应用类加载器,或者清空系统CLASSPATH后再运行Jar。

内容的提问来源于stack exchange,提问作者hong kun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 12:45:37