System.getProperty zu Classloader

Status
Nicht offen für weitere Antworten.

PollerJava

Top Contributor
Hi,

Ich lese momentan alle externen Resourcen mit System.getProperty ein, möchte aber mein Programm auf ein Webstart-Programm umwandeln und daher den Classloader verwenden,

Funktioniert der Classloader auch bei normalen Anwendungen bzw wie kann ich System.getProperty auf den Classloader umwandeln ,

vielen Dank,


lg
 

The_S

Top Contributor
äh ... wie meinen? System.getProperty auf den ClassLoader? System.getProperty gibt die aktuellen Systemvariablen aus. Und das sind bei WebStart (genauso wie bei jedem anderen J2SE-Programm) die Variablen des Rechners, auf dem das Ganze ausgeführt wird. Also auf dem Client.
 

PollerJava

Top Contributor
Mit einer lokalen Anwendung greife ich mit System.getProperty() z.B. auf eine XML- Datei, Bilder usw zu,

Wenn ich jetzt dieses Programm mit Webstart starten möchte, dann kann ich mit System.getProperty nicht auf die XML- Datei oder Bilder zugreifen sondern muss so auf die externen Resourcen zugreifen:

Code:
ClassLoader cl = this.getClass().getClassLoader();             
            states = readStates(cl.getResource("Konfiguration/KonfigComponents.xml").toString());


Meine Frage wöre jetzt, ob das bei meinem lokalen Programm (also kein Webstart) auch so geht, dass ich mit dem ClassLoader auf die externen Resourcen zugreifen kann, denn dann kann ich dieses Programm auch für den WebStart hernehmen und habe nicht 2 unterschiedliche Programme (eines für Webstart und eine Applikation für den lokalen Computer)

lg
 

The_S

Top Contributor
Was System.getProperty mit dem zugriff auf xml und bilder zu tun hat mag mir zwar nicht so ganz einleuchten, aber der ClassLoader ist natürlich genauso auch lokal vorhanden. Was hältst du eigentlich von "einfach mal ausprobieren" ;) ?
 

PollerJava

Top Contributor
Code:
states = readStates("file:///" + System.getProperty("user.dir") + "/Konfiguration/" + xmlDateiPfad);  
 Image img = getToolkit().getImage(System.getProperty("user.dir") + "\\pics\\"+ Control.getStatesElementAt(i).getIcon());

System.getProperty("user.dir") und getToolkit() kann ich ja für WebStart nicht verwenden jetzt suche ich halt nach dem gemeinsamen Nenner von WebStart- Programmen und "normalen" Applikationen, sodass ich aus meiner Applikation einfach ein WebStart- Programm machen kann,

Ausprobiert hab ichs schon, bekomme aber eine NPE mit dem ClassLoader();
 

lhein

Top Contributor
Logischerweise, da ja Deine Bilder und die Konfig-Datei nicht beim anderen Benutzer zu finden sind.
Alles in deine JAR packen und von dort aus laden, das sollte auch über Webstart gehen.

lr
 

lhein

Top Contributor
Dann wird

Code:
states = readStates("file:///" + System.getProperty("user.dir") + "/Konfiguration/" + xmlDateiPfad); 
Image img = getToolkit().getImage(System.getProperty("user.dir") + "\\pics\\"+ Control.getStatesElementAt(i).getIcon());

aber nicht funktionieren, denn so läd man nur externe Resourcen.

Was hält Dich denn davon ab, auch für deine nicht-Webstart Applikation die Resourcen ins JAR zu verlagern?

lr
 

The_S

Top Contributor
Warum liegen die bei der Anwendung nicht auch im JAR? Zur Info:

ClassLoader greift IN das JAR ein, findet also auch nur Dateien, die im JAR liegen. Ob das jetzt WebStart ist oder nicht, ist bumbel.

und System.getProperty gibt keinesfalls das Verzeichnis zurück, in dem sich die main-class befindet, sondern lediglich von welchem Verzeichnis aus die main-class (bzw. jar) ausgeführt wurde.

Du legst deine Daten für eine "normale" Anwendung anders ab, als bei Webstart, und erwartest trotzdem, dass du für beide Anwendungen den selben Code verwenden kannst? Wie soll das denn gehen? Wenn ich zwei Häuser hab - bei einem steht das Auto in der Garage und beim anderen vor der Tür - kann ich ja auch nicht pauschal sagen "Egal, bei welchem Haus du bist, schau in die Garage!".
 

PollerJava

Top Contributor
Wo muss ich das jar- File hinlegen damit der Classloader meine XML- Datei findet?
mein jar- file heißt jetzt KonfigComponents.jar -> in diesem gibt es einen Ordner Konfiguration und da drinnen ist meine xml- datei, der Classloader findet aber die Datei nicht (siehe fehlermenldung).

Was mache ich da falsch??


Code:
  ClassLoader cl = this.getClass().getClassLoader();             
  states = readStates(cl.getResource("Konfiguration/KonfigComponents.xml").toString());


Code:
java.lang.NullPointerException
        at net.pack.Control.<init>(Control.java:51)
        at net.pack.MainFrame.setLoginPfad(MainFrame.java:22)
        at net.pack.MainFrame.<init>(MainFrame.java:17)
        at net.dataserver.DataServer.main(DataServer.java:16)
 

PollerJava

Top Contributor
OK verstehe, der Pfad ist bei mir

Code:
Das ist die URL: jar:file:/C:/Programme/Java/jdk1.6.0/jre/lib/ext/KonfigComponents.jar!/Konfiguration/KonfigComponents.xml

ich möchte die ganzen jars aber in meinem Projektverzeichnis haben und nicht meine ganzen jars in den Pfadd oben kopieren (sondern eben alles kompakt in meinem Projektverzeichnis)

geht das irgendwie?

lg
 

The_S

Top Contributor
Liest du eigentlich, was man dir schreibt? Weißt du, wie man Google und die Forensuche bedient? Wenn die Dateien IM Jar liegen, dann verwende den ClassLoader und gebe nur den Pfad innerhalb des Jars an.
 

lhein

Top Contributor
Ich habe nicht gemeint, daß Du nun die eine Konfig-Jar in die andere Jar packen sollst, sondern den Inhalt der KonfigJar in deine Jar.

lr
 

PollerJava

Top Contributor
und wie kann ich den Pfad setzen, wo der ClassLoader sucht? Momentan sucht er in

Code:
Das ist die URL: jar:file:/C:/Programme/Java/jdk1.6.0/jre/lib/ext/KonfigComponents.jar!/Konfiguration/KonfigComponents.xml

ich will aber mein Programm kompakt haben und nicht die jars verstreunen?

Vielen dank für die Antworten
 

The_S

Top Contributor
Der ClassLoader sucht immer in dem Jar, von welchem er aufgerufen wird. Ich versteh einfach dein Problem net. Sag uns doch einfach mal klipp und klar:

Von wo wird der ClassLoader aufgerufen
Wie wird er aufgerufen
Wo liegen die Dateien
Wo benötigst du die Dateien
... (sonstiges relevante evtl. auch noch)
 

The_S

Top Contributor
Es muss dir net leid tun, dass es so lang gedauert hat, dass kommt vor. Aber wenn du genau definierst was du möchtest, was momentan nicht geht, und wovon das kommt, dann kann man dir auch leichter helfen ;) .
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Problem mit System.getProperty(...) Allgemeine Java-Themen 5
A NullPointer bei System.getProperty("file.seperator") Allgemeine Java-Themen 4
P System.getProperty("user.dir") Allgemeine Java-Themen 10
K Java Version ermitteln (über System.getProperty hinaus) Allgemeine Java-Themen 6
T System.getProperty("user.home") Allgemeine Java-Themen 12
D System.getProperty("user.dir") ? Allgemeine Java-Themen 1
X Input/Output InputStream/Scanner(System.in) read()/hasNextLine() block unterbrechen Allgemeine Java-Themen 7
P9cman java.Lang Klassen fehlen in JRE System Library Allgemeine Java-Themen 1
B Lottospielen mit System, Versuch 2, noch umständlicher als vorher Allgemeine Java-Themen 1
J Frage zu System.getproperties. Allgemeine Java-Themen 60
sascha-sphw Erste Schritte Unit und Integration-Tests im Java Modul System Allgemeine Java-Themen 10
F Frage zu System.in Allgemeine Java-Themen 3
E System property setzten Allgemeine Java-Themen 8
Kirby.exe Movement System für Spiel Allgemeine Java-Themen 13
O Beziehung System.exit(x) <>Errorlevel Allgemeine Java-Themen 2
B System.out Ausgabe auf jtextarea Fehlersuche Allgemeine Java-Themen 8
F System Tray Menubutton ActionListener Allgemeine Java-Themen 5
H Im Tiled-Map-System ein Item anklicken Allgemeine Java-Themen 0
S Java Plugin System (ohne OSGI) Allgemeine Java-Themen 10
D System.arraycopy verhält sich seltsam Allgemeine Java-Themen 1
C Login System Allgemeine Java-Themen 19
A BufferedReader ohne System.in Allgemeine Java-Themen 9
VfL_Freak JDK installieren System-Property "user.dir" Allgemeine Java-Themen 6
J System.arraycopy ergibt anderes Resultat als for-loop Allgemeine Java-Themen 4
F Wie kann ich auf einem System prüfen, ob eine lib verfügbar ist? Allgemeine Java-Themen 2
D Java System.out::println Allgemeine Java-Themen 1
D Methoden Java Applikation Die System Auslastung optimieren ? Allgemeine Java-Themen 7
S Ist Java ein geschlossenes System? Allgemeine Java-Themen 2
L Erste Schritte Suche Java Wiki System? Allgemeine Java-Themen 5
chuxXo System/JLayer Volume ändern Allgemeine Java-Themen 0
Neumi5694 System.out und System.err umleiten - NICHT im Quelltext Allgemeine Java-Themen 4
X System.out/err(Die Console) in JTextArea ausgeben Allgemeine Java-Themen 2
S Best Practice System.arrayCopy verändert Ziel-Array Allgemeine Java-Themen 2
A Methoden Der Sinn von system.out.print(); Allgemeine Java-Themen 9
A System freezes when trying to run external command from Java with wait for Allgemeine Java-Themen 3
A Java | Login-System Allgemeine Java-Themen 3
C System.out.print("") Compiler Fehler Allgemeine Java-Themen 2
Joew0815 Best Practice Wie am besten Plugin-System erstellen? Allgemeine Java-Themen 12
C System.in erhält Input von Tastatur. wo wird das festgelegt? Allgemeine Java-Themen 4
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
M collection persistence system Allgemeine Java-Themen 4
V System.out.println an jeder Stelle im Projekt löschen Allgemeine Java-Themen 4
D System.out's in String speichern. Allgemeine Java-Themen 2
H Interpreter-Fehler ArrayIndexOutOfBoundsException bei System.arraycopy() Allgemeine Java-Themen 3
M System herausfinden Allgemeine Java-Themen 6
O Variablen System.getenv: Sinnlose Werte, Arrays?! Allgemeine Java-Themen 6
G java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
R Methoden Tag System Problem Allgemeine Java-Themen 3
J System.out im GUI anzeigen Allgemeine Java-Themen 3
N System.exit(0/1) Allgemeine Java-Themen 3
F System.out.println mit log4j ersetzen Allgemeine Java-Themen 10
D System.LoadLibrary(..) - Programm stürzt ab Allgemeine Java-Themen 2
U Classpath DLLs mittels System.load() laden: Allgemeine Java-Themen 6
D Listener auf System.out.err / System.out.println Allgemeine Java-Themen 5
G Input/Output System.in "umbiegen" für junit-Test Allgemeine Java-Themen 4
Kr0e User management system Allgemeine Java-Themen 2
S Java Programm -System Neustart überleben? Allgemeine Java-Themen 3
Rudolf Wann System.exit und wann dispose? Allgemeine Java-Themen 9
ruutaiokwu System.out auf files umlenken in log4j.xml Allgemeine Java-Themen 4
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
agent47 Plugin System Verständnisfrage Allgemeine Java-Themen 6
M Wie externe System-Ressourcen zwangsweise freigeben Allgemeine Java-Themen 2
E Durch System.in.read() blockierten Thread stoppen Allgemeine Java-Themen 10
P System.out im Eclipse plugin Allgemeine Java-Themen 4
C File System Watcher Allgemeine Java-Themen 2
S Verhalten von System.getenv() in Ubuntu / Linux Allgemeine Java-Themen 12
D System.loadlibrary funktioniert nicht Allgemeine Java-Themen 6
H Event ähnliches System Allgemeine Java-Themen 20
Dissi Gammawerte des Grafiktreibers / System ändern? Allgemeine Java-Themen 3
M Plugin-System Allgemeine Java-Themen 4
R System.out oder System.err? Allgemeine Java-Themen 10
M Wie kann ich alle System.out Strings in ein log window umleiten? Allgemeine Java-Themen 6
K System.exec() Programm mit mehreren Parametern Allgemeine Java-Themen 8
G unerklärliches System.out Allgemeine Java-Themen 3
M System.setProperty("javax.net.ssl.trustStore", "mykey.pkx"); Allgemeine Java-Themen 1
T System Preferences + LInux (Ubuntu) Allgemeine Java-Themen 8
G OutputStream to System.out Allgemeine Java-Themen 35
J Wo werden die System properties gespeichert Allgemeine Java-Themen 12
C JSR295 in Produktiven System zu empfehlen? Allgemeine Java-Themen 3
B System CPU Zeit / Last auslesen Allgemeine Java-Themen 2
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
T Feststellen ob System-Konsole verfügbar Allgemeine Java-Themen 2
L remote debugging of a multi threaded system Allgemeine Java-Themen 2
F Probleme mit eigenem Plugin-System Allgemeine Java-Themen 3
L System.exit Allgemeine Java-Themen 3
G System.out und String machen was anderes Allgemeine Java-Themen 5
G System.out im window h.inein bringen? Allgemeine Java-Themen 8
A System.in pipen Allgemeine Java-Themen 3
I Am System angemeldeten Benutzer abfragen Allgemeine Java-Themen 11
E System.out umleiten Allgemeine Java-Themen 2
S system.out und system.err einer Methode in Datei schreiben. Allgemeine Java-Themen 7
S System Informationen auslesen. Allgemeine Java-Themen 3
N Thread und System.out.print() Allgemeine Java-Themen 2
K Kann man System.out in eine Datei speichern? ähnlich wie log Allgemeine Java-Themen 7
B Native DLL zweimal laden: System.load(sPath); Allgemeine Java-Themen 5
K Abfrage ob JRE oder JDK auf System installiert ist. Allgemeine Java-Themen 12
B serlvet system.out ausgabe Allgemeine Java-Themen 4
N Plugin-System: Klassen über String laden Allgemeine Java-Themen 3
O System.nanoTime() einheitlichen Wert auf mehreren Rechnern? Allgemeine Java-Themen 9
T System-Monitoring in Echtzeit Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben