Java 程序无法作为 .jar 文件打开,但在导出前在 Intellij 中运行良好
Java program won't open as a .jar file, yet works just fine in Intellij before exported
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 中运行良好。我不完全确定人们是否需要查看我的实际代码才能解决此问题,所以如果您想查看任何内容,请告诉我,我会 post 它。
link 到错误信息
这是上图中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 中的项目结构:
项目结构
这是 .jar 文件在 7-zip 中打开时的样子:
所以答案最终变得非常简单。在我的 IDE 中,我将字体的文件类型列为“.TTF”并且 IDE 能够读取它。但是,对于.jar文件,它需要是小写的“.ttf”,否则将无法使用。
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 中运行良好。我不完全确定人们是否需要查看我的实际代码才能解决此问题,所以如果您想查看任何内容,请告诉我,我会 post 它。
link 到错误信息
这是上图中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 中的项目结构: 项目结构
这是 .jar 文件在 7-zip 中打开时的样子:
所以答案最终变得非常简单。在我的 IDE 中,我将字体的文件类型列为“.TTF”并且 IDE 能够读取它。但是,对于.jar文件,它需要是小写的“.ttf”,否则将无法使用。