IntelliJ/Gradle打包Jar无法运行:主清单缺失+资源加载异常
问题:Gradle打包Jar后资源加载失败(空指针异常),IntelliJ内运行正常
已尝试多个解决方案(如执行java -cp app.jar main.Main指定主类运行),但IntelliJ/Gradle打包的app.jar无法正常运行。IntelliJ内运行项目无异常,打包后执行出现空指针异常,提示img为null,推测与资源文件夹未被正确打包有关。
错误栈
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.awt.image.BufferedImage.getSubimage(int, int, int, int)" because "img" is null at entities.MiqoCharacter.loadAnimationMale(MiqoCharacter.java:280) at entities.MiqoCharacter.<init>(MiqoCharacter.java:50) at gamescreens.CharacterDisplayScreen.initClasses(CharacterDisplayScreen.java:33) at gamescreens.CharacterDisplayScreen.<init>(CharacterDisplayScreen.java:27) at main.Game.initClasses(Game.java:33) at main.Game.<init>(Game.java:22) at main.Main.main(Main.java:7)
资源加载方法代码
public static BufferedImage GetSpriteAtlas(String fileName) { BufferedImage img = null; InputStream is = AssetLoader.class.getResourceAsStream(fileName); if (is != null) { try { img = ImageIO.read(is); } catch (IOException e) { e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } return img; }
build.gradle配置
plugins { id 'java' } jar { manifest { attributes "Main-Class": "main.Main" } } group 'org.example' version '1.0-SNAPSHOT' repositories { mavenCentral() } dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' } test { useJUnitPlatform() }
MANIFEST.MF内容
Main-Class: main.Main
尝试了StackOverflow及YouTube上的多种方案仍未解决,问题表现为Jar未正确打包资源或无法检测主类。
内容的提问来源于stack exchange,提问作者Sage Belknap
相关产品推荐
相关产品推荐

