使用Maven打包后出现org/lwjgl/glfw/GLFW类找不到错误求助
问题原因及解决方案
核心问题
你执行mvn clean compile package时,maven-dependency-plugin的copy-dependencies目标绑定在install阶段,这个阶段不会在package命令流程中触发,导致依赖的LWJGL相关JAR(包括lwjgl-glfw)没有被复制到target/lib目录。运行JAR时类路径找不到对应类,因此抛出NoClassDefFoundError。
具体修改步骤
1. 调整依赖复制的执行阶段
修改maven-dependency-plugin的执行阶段为package,这样执行package命令时就会自动复制依赖到lib目录:
<plugin> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <phase>package</phase> <!-- 将install改为package --> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/lib</outputDirectory> <!-- 可选:显式指定复制native依赖的classifier,确保native库被正确复制 --> <includeClassifiers>${lwjgl.natives}</includeClassifiers> </configuration> </execution> </executions> </plugin>
2. 修复编译版本冲突
你的pom.xml中,properties里配置的编译源和目标版本是12,但maven-compiler-plugin里指定的release版本是11,存在版本不一致,统一为12:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> <configuration> <release>12</release> <!-- 与properties中的版本保持一致 --> </configuration> </plugin>
验证操作
修改完成后,执行mvn clean package,进入target目录:
- 确认
lib目录存在,且包含lwjgl-glfw-${lwjgl.version}.jar和对应的native依赖JAR - 运行
java -jar javaSwingBuild_2D-0.0.1-SNAPSHOT.jar测试功能
内容的提问来源于stack exchange,提问作者Nicolas Reyneke
相关产品推荐
相关产品推荐

