Frage

Ich habe eine Methode, die am Anfang meines Programms aufgerufen wird, und es funktioniert gut, wenn ich das Glas laufen, aber wenn ich die jnlp Datei ausführen stürzt.

public void newImg(String i)
{
    try
    {
        File file = new File(i);
        img = ImageIO.read(file);
    }
}

img ist ein BufferedImage, übrigens.

War es hilfreich?

Lösung

Die Chancen stehen der Pfad, den Sie in der Datei sind zu geben, oder Berechtigungen, stimmen nicht überein. Legen Sie die Datei Ctor in einen try-Block, fangen die Ausnahme, und finden Sie heraus, was es ist.

Es sollte wie folgt aussehen:

try {
    File file =  new File(i);
    img = ImageIO.read(file);
} catch (Exception ex) {
    // You probably want to open the java console, or use a logger
    // as a JNLP may send stderr someplace weird.
    Systemm.err.println("Exception was: ", ex.toString());
}

Der Code, den Sie haben tut nichts, mit Ausnahme.

Sie können an der Ausnahmen aussehen wollen fädeln in die Java Tutorial.

update

Sehen Sie meine Kommentare. Ich habe gerade versucht etwas und bestätigt, was ich dachte - Code mit einem try {} und ohne catch oder finally nicht einmal kompilieren. wenn dies wirklich der Code denken, dass Sie gerade arbeiten, haben Sie wahrscheinlich eine alte Klassendatei worden Laden; dieser hat nicht kompiliert.

$ cat Foo.java 
public class Foo {
     public void tryit() {
         try {
             File f = new File(null);
         }
     }
}
$ javac Foo.java
Foo.java:3: 'try' without 'catch' or 'finally'
         try {
         ^
1 error
$ 

Andere Tipps

Vielleicht laden Sie Ihre nicht Ihr Bild richtig. Sie nicht die relative Position der Datei verwenden. Dies wird für jedes Betriebssystem unterschiedlich sein. Ihr Bild in der JAR Sie richtig wie folgt geladen werden soll:

URL url = this.getClass().getResource("image.jpg");
Image img = Toolkit.getDefaultToolkit().getImage(url);

Dies wird eine Datei namens image.jpg laden, die in der gleichen Lage wie die Klasse befinden. Sie können auch Dinge wie File.pathSeparator Wenn es an einem anderen Ort verwenden.

eine dieser beiden Methoden Verwenden Sie es als eine Ressource zu laden:

http://java.sun.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String) http://java.sun.com/javase/6/docs /api/java/lang/Class.html#getResourceAsStream(java.lang.String)

Stellen Sie sicher, dass Sie den richtigen Dateinamen / Pfad haben.

Achten Sie darauf, den Dateizugriff auf das Dateisystem haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top