Ich versuche, ein Programm zu exportieren, das mit Bildern zu tun hat. Wenn ich das Projekt exportiere, gibt es mir eine IllegalArgumentException, bei der die Eingabe null ist. Ich habe alle für die Antwort sah über, aber jeder scheint nicht mit meinem Code zu arbeiten:java - Kann ein Bild nicht in eine ausführbare JAR-Datei exportieren
package dev.ttt;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
public class Assets {
public static BufferedImage x, o;
public static void init() { //Loads the X and O images
System.out.println("Loading Assets...");
x = loadImage("/images/x.png");
o = loadImage("/images/o.png");
System.out.println("Assets loaded.");
}
public static void sayLoad(String path) { //Prints the image path to the console
System.out.println("Loading " + path);
}
public static BufferedImage loadImage(String path) {
try {
sayLoad(path); //Prints the image path to the console
return ImageIO.read(Assets.class.getResourceAsStream(path));
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
Jede Idee, wie dieses Problem zu lösen? Es funktioniert gut in Eclipse, aber nicht in einem Glas.
EDIT:
Die Ausgabe von java -jar "myjar.jar":
Initializing window...
Size: 330 330
Initializing Canvas...
Initialization complete.
Starting Thread...
Thread Started.
Initializing Game...
Loading Assets...
Loading /images/x.png
Exception in thread "Thread-2" java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at dev.ttt.Assets.loadImage(Assets.java:31)
at dev.ttt.Assets.init(Assets.java:16)
at dev.ttt.GameLoop.gameInit(GameLoop.java:81)
at dev.ttt.GameLoop.run(GameLoop.java:129)
at java.lang.Thread.run(Unknown Source)
EDIT 2:
55 Sun Sep 24 17:47:30 EDT 2017 META-INF/MANIFEST.MF
1308 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/WinDetection.class
3719 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/GameLoop.class
2347 Sun Sep 24 17:47:14 EDT 2017 dev/ttt/Game.class
1451 Sun Sep 24 17:47:14 EDT 2017 dev/ttt/Assets.class
503 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/Launcher.class
2874 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/ai/AI.class
456 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/player/Player.class
2875 Sat Sep 23 20:18:30 EDT 2017 dev/ttt/player/MouseInput.class
1010 Sun Sep 24 12:09:46 EDT 2017 images/O.png
1034 Sun Sep 24 12:09:46 EDT 2017 images/X.png
310 Thu Sep 21 12:22:30 EDT 2017 .checkstyle
385 Thu Sep 21 12:26:28 EDT 2017 .project
343 Sat Sep 23 21:03:18 EDT 2017 .classpath
Bitte geben Sie die Ausgabe von "jar tvf your.jar" –
@OP red bearbeiten: ThorbjørnRavnAndersen nicht für Stacktrace (obwohl dies auch nützlich sein kann, so entfernen Sie es nicht), aber über JAR-Dateistruktur, die kann erhalten Sie über 'jar tvf your.jar' Befehl (mehr Infos unter https://docs.oracle.com/javase/tutorial/deployment/jar/view.html). – Pshemo