处理JAR资源路径并直接运行的最佳实践

时间:2017-03-21 08:19:31

标签: java intellij-idea gradle jar

让我解释一下我的问题。我使用intelliJ IDE并希望通过集成的Run-> Run(^ R)命令定期运行我的gradle-project。 一切都按预期工作正常。

但我还想将一个完全构建的JAR文件部署到某些测试人员。 问题是,JAR将无法正常运行,抛出 NullPointerException ,因为找不到位于资源目​​录中的正确图形精灵。

精灵加载了这段代码:

hintergrundBild = new Bild(this.getClass().getResourceAsStream("../sprites/Backgrounds/desert-background-looped_large.jpg"));

(这适用于直接运行项目,但不适用于构建JAR文件)。

请查看我的项目结构: Project structure

也许build.gradle文件也是相关的:

group 'me.myGroupName'
version '1.0-SNAPSHOT'

apply plugin: 'java'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
} 

jar {
    manifest {
        attributes  'Implementation-Title': 'Gradle Quickstart',
                'Implementation-Version': version,
                'Main-Class' : 'SpaceShooter.SpaceShooter'
    }
}

我正在寻找一种以某种方式加载资源的方法,这种方式适用于Running和构建JAR。 我真的很感激任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

hintergrundBild = new Bild(this.getClass().getResourceAsStream("../sprites/Backgrounds/desert-background-looped_large.jpg"));

如果将其更改为?

,该怎么办?

hintergrundBild = new Bild(this.getClass().getResourceAsStream("/sprites/Backgrounds/desert-background-looped_large.jpg"));