尝试运行 JAR 文件时出现 NoClassDefFoundError [重复]
Posted
技术标签:
【中文标题】尝试运行 JAR 文件时出现 NoClassDefFoundError [重复]【英文标题】:NoClassDefFoundError when trying to run JAR file [duplicate] 【发布时间】:2021-09-28 17:57:46 【问题描述】:我遇到了 NoClassDefFoundError 的问题。在我的项目中,我使用 zip4j 外部库来解压缩文件。我使用:java 16、maven 和 IntelliJ。当我在 IDE 中运行我的应用程序时,一切正常。但是当我试图从 .jar 文件中运行它时,NoClassDefFoundError 会弹出。 zip4j的依赖如下图:
<!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.9.0</version>
</dependency>
在我的主类中,我使用从 zip4j 导入的 ZipFile 对象。当我评论这一行时,.jar 文件被正确执行。这是我的应用程序/maven 无法将此库带到 .jar 文件的问题吗?我用各种可能的方式搜索了它。我在项目结构中添加了依赖项,它是从 maven 存储库下载的,但仍然没有。我在某处发红,这需要添加到 classPath - 我该怎么做?我现在正在尝试解决这个问题 5 个多小时,如果有人可以帮助我,那将是非常棒的。提前谢谢你。
【问题讨论】:
【参考方案1】:Jar 中的文件结构与我们项目在 IDE 中的文件结构不同。在使用 Jars 时,我多次遇到过这个问题。为了更好地理解,请尝试解压缩 Jar 以查看内部文件结构。我通过使用以下代码行解决了它:
Thread.currentThread().getContextClassLoader().getResource("filename").getPath();
【讨论】:
以上是关于尝试运行 JAR 文件时出现 NoClassDefFoundError [重复]的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试运行刚创建的jar文件时出现Maven错误“无法初始化主类”
运行 Eclipse 导出的 jar 时出现“找不到主类”错误
将sqlite数据库添加到jar时出现sql错误或缺少数据库