项目右键 ========== run as ============ maven install
会在项目target目录下生成一个jar包
jar 包的内部结构
这个jar 包执行总是报错,一开始提示没有设置main class,手动修改META-INF 下的 MANIFEST.MF ,加入
Main-Class: com.zzg.mybatis.generator.MainUI
Class-Path: .
再执行还是报错,提示
Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
接下来看方案二,方案二虽然也不能执行,但是找到了出错的问题,修改后能够正常执行
项目右键 ================= export ================= runnable jar file
选择 jar 启动时执行哪个类中的 main 方法 、导出的目录 、依赖的 jar 包打包的方式
第一个Extract required libraries into generated JAR
意思是将依赖的jar解压出来变成class丢进你生成的jar里面;
第二个Package required libraries into generated JAR
意思是将依赖的jar不解压,直接放进你生成的jar里面;
第三个Copy required libraries into a sub-folder next to the generated JAR
意思是将依赖的jar放到你生成jar的同级目录下的”xxx_lib”文件夹里面。
这里我选的第一个(第一个和第二个都亲测可用,第三个应该也是可以的,只是没有去测试)
第一种 jar 包的内部结构
注意看这里的 resources 目录,它里面的东西并没有直接放在根目录,导致类似下面的代码获取到的 url 都是 null
URL url = Thread.currentThread().getContextClassLoader().getResource("fxml/MainUI.fxml");
只需要把 resources 里的文件都拷贝到根目录即可
到此 jar 包已经可以正常执行
使用过程中提示
于是把lib包又给拷出去了
原文:https://www.cnblogs.com/LcxSummer/p/14786016.html