当前位置: 首页 > 知识库问答 >
问题:

Java程序不会以. jar文件打开,但在导出之前在Intellij中运行良好[重复]

权弘新
2023-03-14

Java程序无法作为打开。jar文件,但在导出为jar文件之前,在IntelliJ中运行良好。在cmd中运行jar时出错

exception in thread main java.lang.nullpointerexception: 
Cannot invoke "java.net.URL.openstream() because the return value of
"java.lang.Class.getResource(String)" is null

,这对我来说没有多大意义。

打开jar文件会发现程序试图访问的资源确实存在于jar文件中,如前所述,它在IDE中运行良好。我不完全确定人们是否需要看到我的实际代码来修复这个问题,所以如果你想看到任何东西,请告诉我,我会发布它。

这是cmd在上图中指出的代码部分。“FontMainText”是第103行。

    public GUI(Game game) throws IOException, UnsupportedAudioFileException {
    this.game = game;

    //Fonts
    try{
        fontMainText = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(26f);
        fontTitle = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(120f);
        fontStats = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(26f);
        fontHealth = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(42f);
        fontOptions = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(30f);
        fontStart = Font.createFont(Font.TRUETYPE_FONT, getClass().getResource("KnightsQuest.TTF").openStream()).deriveFont(40f);

        GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
        graphicsEnvironment.registerFont(fontMainText);
    }
    catch(IOException | FontFormatException e){
    }

}

任何帮助将不胜感激,谢谢!

这是IDE中的项目结构:项目结构

共有1个答案

卞经业
2023-03-14

所以答案很简单。在我的IDE中,我将字体的文件类型列为“.TTF”,IDE能够读取它。然而,对于。jar文件,它需要小写“.ttf”,否则它将无法工作。

 类似资料: