从jar中获取另一个包中的资源

时间:2015-05-14 18:18:24

标签: java netbeans jar nullpointerexception

好的,我知道这个问题很多,但我找到的所有解决方案都没有用。我目前正在使用自定义字体的netbeans中创建应用程序。该程序在netbeans中运行良好,没有错误。但是当Netbeans清理并构建jar时,我从命令行运行它:

java -jar MyProject.jar

程序在以下行返回nullPointerException:

try {
        font = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("/fonts/Raleway-ExtraLight.TTF").openStream()); //<--this line
    } catch (FontFormatException | IOException | NullPointerException e) {
        System.out.println("Error creating font: "+e);
        System.exit(1);
    }

我尝试了许多不同的解决方案,例如:

getClass().getClassLoader().getResource();
但是他们不行。我之前从未使用过流,如果我必须使用它们,我觉得我可能需要重新编写程序的主要部分(我也加载了很多图像,我不知道它们是否有效)。我将所有代码放在一个包中,将我的字体和图像放在它们自己的包中。欢迎所有答案。我只是真的开始编程,并希望得到帮助。提前谢谢!

(编辑)只是想说我做了一些调试,发现字体的位置为空。

1 个答案:

答案 0 :(得分:0)

好的,我想我已经解决了。默认情况下,如果未设置类路径,则默认情况下将类路径设置为运行该命令的文件夹。这意味着我的程序在包含我的jar的文件夹中查找字体,这是不正确的位置,因为字体在jar中。您可以使用-cp从命令行设置类路径,然后使用冒号(;)分隔所有文件夹和文件(包括外部jar)。这个问题与我的代码完全无关。