getClassLoader().getResource() gibt null zurück
Habe ich diese test-app:
import java.applet.*;
import java.awt.*;
import java.net.URL;
public class Test extends Applet
{
public void init()
{
URL some=Test.class.getClass().getClassLoader().getResource("/assets/pacman.png");
System.out.println(some.toString());
System.out.println(some.getFile());
System.out.println(some.getPath());
}
}
Wenn ich es von Eclipse, bekomme ich die Fehlermeldung:
java.lang.NullPointerException
at Test.init(Test.java:9)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Classpath (aus .CLASSPATH-Datei)
<classpathentry kind="src" path="src"/>
In meinem c:\project\src Ordner habe ich nur die Test.java Datei und das "assets" Verzeichnis in dem die Datei pacman.png.
Was mache ich falsch und wie es zu lösen?
InformationsquelleAutor Click Upvote | 2009-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde es so machen:
"/assets/pacman.png" ist eine absolute Lage whle "assets/pacman.png" ist eine relative Position.
wie erwartet, vorausgesetzt, dass der andere versucht, hat nicht funktioniert. Was ist das Paket, das die Klassen sind, wo ist der .class-Datei liegt?
Die .Klasse in c:\java\test\bin wenn ich hit run in eclipse. Die .java ist in c:\java\test\src und die assets/ Ordner ist auch in diesem Verzeichnis. Kein Paket wird jetzt verwendet, weil ich nur versuchen, damit es funktioniert für meine anderen Projekt. Dank
die assests dir wo sein muss, die .Klasse-Datei ist
froh, dass Sie es geschafft habe
InformationsquelleAutor TofuBeer
Müssen Sie nicht den Schrägstrich am Anfang bekommen, wenn eine Ressource von einem
ClassLoader
, weil es keine Idee der "relative" Teil, um mit zu beginnen. Sie nur brauchen, wenn man immer eine Ressource aus einerClass
wo relative Pfade gehen von der-Klasse-Paket-Ebene.Darüber hinaus wollen Sie nicht
Test.class.getClass()
wie bekommt die Klasse von Test.class, das wirdClass<Class>
.In anderen Worten, versuchen Sie eine der folgenden Zeilen:
dass measn, dass "einige" ist null... das heißt, Sie sind nicht immer die Ressource ordnungsgemäß.
ja, also wie kann ich es beheben? ist der classpath falsch oder sonst etwas, das ich ändern muss?
Versuchen Sie, das applet-Seite der Dinge aus der Gleichung heraus - führen Sie den gleichen code in eine Konsolenanwendung.
Aber Baue ich ein applet so konnte ich diese in einem web-browser, es wäre sinnlos, es zu machen, eine Konsole :(. Es muss einen Weg, um es Arbeit in das applet? Wie applets, die Bilder verwenden?
InformationsquelleAutor Jon Skeet
Klicken Sie Upvote,
.getClass().getResource(fileName)
hältLage der Dateiname ist der gleiche Drehort, der von der aufrufenden
Klasse.
.getClass().getClassLoader().getResource(fileName)
eshält den Standort von Dateinamen ist die root - in anderen Worten
bin-Ordner
Trifft es
NullPointerException
wenn die Datei tatsächlich nicht vorhanden ist.Quelle:
Ausgabe ;
InformationsquelleAutor namalfernandolk
Diese funktioniert bei mir:
werden, welche Vermögenswerte in den gleichen Ordner mit Test.class output-Datei (nach einem miserablen überprüfen und Debuggen)
InformationsquelleAutor Thinhbk