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中的项目结构:项目结构
所以答案很简单。在我的IDE中,我将字体的文件类型列为“.TTF”,IDE能够读取它。然而,对于。jar文件,它需要小写“.ttf”,否则它将无法工作。
我使用kotlin中的EclipsePAHOMQTT库和IntellijIDE中的Gradle创建了一个小型mqtt应用程序。当通过Intellij运行它时,它运行良好,但是当我构建它并运行创建的jar文件时,我会得到一个错误。 从我看到的其他问题来看,这似乎与类路径有关,但我不确定如果这确实是问题所在,需要做什么,因为我使用的是gradle而不是jar文件作为库。 我正在学习这个教程 这是我的档
原因:java.lang.ClassNotFoundException:javax.mail.address
当我尝试在命令提示符下运行时,它会这样说:
用编译后,我尝试用java运行,它运行了,但随后抛出了一个
但是当我试图在Netbeans中清理和构建它时,它被这条线噎住了: 错误是:
我是Java和堆栈溢出的新手,我在IntelliJ中创建了一个Java项目,并通过构建工件和构建。jar文件创建了一个。jar文件,以便在不使用IntelliJ的情况下运行该项目。该程序使用一个机器人来打开运行窗口,通过按Windows和R键,移动鼠标到我的计算机的分辨率(1366 x 768)的盒子内部,单击,键入cmd并按回车,移动鼠标到cmd窗口内部,单击,键入whoami并按回车。这在In