Eclipse导出Discord Bot Jar包时如何包含Maven依赖解决运行报错?
解决Eclipse Maven项目导出Jar时依赖未打包的问题
这个java.lang.NoClassDefFoundError完全是因为你的Jar里只包含了自己写的代码,Maven管理的JDA等依赖库根本没被打包进去,运行时JVM找不到这些类就报错了。下面给你两种靠谱的解决办法:
方法一:用Maven Assembly Plugin(推荐,Maven项目标准做法)
这是最稳妥的方式,直接通过Maven配置把依赖和你的代码打包成一个可执行的Jar:
- 打开你的
pom.xml,在<build>标签下添加Assembly插件的配置:
<plugins> <!-- 保留你原有插件配置,新增以下内容 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>3.3.0</version> <configuration> <!-- 替换成你的Bot主类全路径,比如com.yourbot.Main --> <archive> <manifest> <mainClass>你的主类全路径</mainClass> </manifest> </archive> <descriptorRefs> <!-- 这个配置会自动打包所有依赖到Jar中 --> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins>
- 在Eclipse里右键项目 → Run As → Maven clean,执行完成后再选Run As → Maven install。
- 去项目的
target目录里找,会生成两个Jar文件:一个是仅包含你的代码的普通Jar,另一个名字带-jar-with-dependencies的就是包含所有依赖的可执行Jar,直接运行这个Jar即可。
方法二:用Eclipse自带的导出向导(快速临时方案)
如果不想修改pom文件,也可以用Eclipse的导出功能直接打包依赖:
- 右键项目 → Export → 搜索并选择Runnable JAR file → 点击Next。
- 在Launch configuration里选择你之前能正常运行Bot的那个启动配置,Export destination设置Jar的保存路径。
- 关键步骤:在Library handling里选择以下任意一个选项:
- Package required libraries into generated JAR:把所有依赖打包进同一个Jar,Eclipse会自动处理类路径问题。
- Extract required libraries into generated JAR:把依赖的类文件解压后和你的代码合并(少数情况可能出现类名冲突,但大部分场景下没问题)。
注意别选默认的Copy required libraries into a sub-folder next to the generated JAR,除非你打算把Jar和依赖文件夹一起分发。
- 点击Finish,导出完成后运行这个Jar就不会再出现找不到类的错误了。
另外提醒下,你的项目用的是Java 8,要确保JDA版本和Java 8兼容(从你提供的pom配置来看版本是匹配的,后续如果还有问题可以再核对版本)。
内容的提问来源于stack exchange,提问作者xFish
相关产品推荐
相关产品推荐

