# Jar File funktioniert nicht auf PC2, auf PC1 schon



## GUI-Programmer (19. Aug 2011)

Hallo

Ich habe mit der, von mir eigentlich nichtmehr benutzten Entwicklerumgebung BlueJ (3.0.4) ein ausführbares Jar File erstellt. Auf meinen PC (Windows 7, 64 bit, mit jdk 1.7.0) öffnet sich das JFrame ohne Weiteres beim Doppelklicken auf die Datei, es funktioniert auch über die Konsole mit 
	
	
	
	





```
javaw -jar "Dateinname.jar"
```
 oder 
	
	
	
	





```
java "Mainklassenname"
```
.

Nun zum eigentlichen Problem:
Die exakt selbe Datei funktioniert weder per Doppelklick noch über die Konsole auf meinen anderen PC (Windows XP, 32 bit, mit ebenfalls jdk 1.7.0)
Ich habe bereits mit 
	
	
	
	





```
java -version
```
 und 
	
	
	
	





```
javac -version
```
 überprüft, ob ich die Umgebungsvariablen richtig gesetzt habe, aber es passt.
Was ich vielleicht noch erwähnen sollte: Die Manifest-Datei stimmt natürlich auch, zudem sie ja auch von BlueJ erstellt wurde.


----------



## Volvagia (19. Aug 2011)

Exception? Oder garnichts?


----------



## JohannisderKaeufer (19. Aug 2011)

Wie Nelson schon sagte:

HAHA:lol:

Wenn ich mal recherchiere:

http://www.java-forum.org/allgemeine-java-themen/121999-jdk-erweitern.html


Wenn ich davon ausgehen darf, dass du auf deinem Windows 7 Rechner dein JDK/JRE fachmännisch gepacht hast, dann hast du genau das Ergebnis wovor man dich in dem anderen Thread bewahren wollte.

Es werden dir einfach ein paar libs/jars auf deinem Windows XP Rechner fehlen, die du beim anderen Rechner im JDK/JRE direkt untergebracht hast.

Irgendwann muß man sich eben doch mit dem Thema classpath auseinandersetzen.


----------



## theuserbl (19. Aug 2011)

GUI-Programmer hat gesagt.:


> Auf meinen PC (Windows 7, 64 bit, mit jdk 1.7.0) öffnet sich das JFrame ohne Weiteres beim Doppelklicken auf die Datei, es funktioniert auch über die Konsole [...]
> Die exakt selbe Datei funktioniert weder per Doppelklick noch über die Konsole auf meinen anderen PC (Windows XP, 32 bit, mit ebenfalls jdk 1.7.0)



Wie Volvagia schon schrieb, wäre es interessant zu erfahren, welche Fehlermeldungen das Programm ausgibt.
Oder zumindest den Quellcode oder Teile davon veröffentlichen oder das Binary oder ein aufs Wesentliceh verkürztes Binaray bei dem das von Dir beschriebene auftritt.
Man muß das was Du berichtest, ja schließlich irgendwie nachvollziehen oder reproduzieren können.

Man kann ja auch nicht schreiben
"Ich habe ein Problem mit meinem Computer. Was muß ich tun, damit alles wieder normal läuft?"
und dann erwarten, daß einem problemlösend geholfen wird.





JohannisderKaeufer hat gesagt.:


> Wie Nelson schon sagte:
> 
> HAHA:lol:
> 
> ...



Na, also so blöd kann man ja kaum sein, oder?
Ich hatte früher selber oftmals ins ext-Verzeichnis jar-Dateien kopiert. Aber die Jars sind dort ja sehr übersichtlich aufgeführt und man weiß ja welche von einem selber stammen.

Es ist wesentlich praktischer sie während der Entwicklung (wenn man nur mit Javac programmiert ohne IDE) nicht immer mit der Option "-classpath" oder einer Umgebungsvariablen immer wieder von neuem fürs Kompilieren und Ausführen einbinden zu müssen.
Übrigens stürzt bei mir unter OpenSuSE 11.4 Eclipse ab, weshalb ich entsprechend wenig von solchen Speicherfressern wie Eclipse und NetBeans halte.

Standardmäßig sind im JDK 6 im ext-Verzeichnis die Datien dnsns.jar, localedata.jar, meta-index, sunjce_provider.jar, sunmscapi.jar und  sunpkcs11.jar. Im JDK 7 sind es noch zusätzlich sunec.jar und zipfs.jar. Alle anderen Dateinen sind wenn von einem selbst hinzugefügt worden.

Grüße
theuserbl


----------



## GUI-Programmer (20. Aug 2011)

Ok, große Entschuldigung!!!
Hatte wegen zeitmangels die Fehlermeldung komplett vergessen!!!

Fehlermeldung: Failed to load Main-Class manifest attribute... (bei dem XP PC)

Finde ich sehr komisch, da die Manifest-Datei eigentlich ja richtig sein muss, da der jar-File ja auf meinen Win7 PC läuft!


Und übrigens JohannisderKaeufer: Das Thema JDK erweitern hat sich dank den guten Ratschlägen erledigt, d.h.: JDK erweitern = Fail !!! :toll:


----------



## Volvagia (20. Aug 2011)

Was steht denn drinnen?


----------



## GUI-Programmer (20. Aug 2011)

Volvagia was meinst du mit 





> Was steht denn drinnen?


 ?


----------



## GUI-Programmer (20. Aug 2011)

Falls du wissen wolltest, was in der Manifest-Datei steht:
Manifest-Version: 1.0
Class-Path: 
Main-Class: Package_1.Darstellung_Frame


----------



## Kevin94 (20. Aug 2011)

Kann es sein, dass du die Pathvariable auf deinem XP Rechner noch nicht so umgestellt hast, dass sie auf dein jdk1.7.0 zeigt, sondern noch auf die 1.6 version?


----------



## GUI-Programmer (20. Aug 2011)

Also bei den Aufruf von 
	
	
	
	





```
javac -version
```
 wird auch 1.7.0 angezeigt. Jedoch bei 
	
	
	
	





```
java -version
```
 wird noch die ältere 1.6.irgendwas angezeigt. Vielleicht ist das ja das ganze Problem. 
Dennoch habe ich die Umgebungsvariablen beide richtig eingefügt:
C:\Program Files\Java\jdk1.7.0\bin;C:\Program Files\Java\jre7\bin bei dem PC bei dems nicht funktioniert, der XP
c:\Program Files (x86)\Java\jdk1.7.0\bin;c:\Program Files (x86)\Java\jre7\bin bei dems funktioniert, der Win7

Ach ja, beim Win7 PC wird auch die Version 1.7.0 bei den Aufruf von 
	
	
	
	





```
java -version
```
 angezeigt!


----------



## TheRealSpikee (20. Aug 2011)

1) es reicht wenn du das JDK angibst ... die zusätzliche angabe des JRE kann rausfliegen
2) an welcher stelle im PATH steht das JDK ? vor oder nach %SystemDrive%\Windows ? falls dahinter : dann ist auf deinem system i-wie noch v1.6 aktuell und dein system hat das umstellen auf v7 nich mitbekommen ... > einfach mal alles was mit JAVA zu tun vom rechner schmeißen ...


----------



## GUI-Programmer (20. Aug 2011)

TheRealSpikee 





> 1) es reicht wenn du das JDK angibst ... die zusätzliche angabe des JRE kann rausfliegen


Eben nicht!!!

Genau daran hat es gelegen!!! Problem gelöst!!!
Ich war sogar selbst daran schuld, da ich die neue Version nicht installiert hatte, sondern lediglich das neu jdk und jre in den entsprechenden Ordner kopiert habe! Danach habe ich zwar noch die Path-Variable richtig gestellt, allerdings kommt es auch auf die CLASSPATH-Variable an. Diese hat nämlich noch auf die alte 6er Version des jre gezeigt!
Meine Lösung war ganz einfach: Beides löschen (jre7 und jdk1.7.0), danach die Installation ausführen!! Dann natürlich noch in der Path-Variable das jdk1.7.0 wieder einbringen und es funktionierte. 
	
	
	
	





```
java -version
```
 und 
	
	
	
	





```
javac -version
```
 liefert die Version 7.

Vielleicht hätte es alternativ auch genügt die CLASSPATH-Variable richtig einzustellen, sodass sie auf ...\jre7\...\... zeigt.

Trozdem danke für eure Hilfe


----------



## TheRealSpikee (21. Aug 2011)

zu 1)
Warum reicht es bei dir nicht wenn nur das JDK drin steht ? Mal so als Tipp : im jdk/bin - Ordner ist das komplette JRE ebenfalls enthalten , sowie im unter-ordner jdk/jre/bin ...
Du hast also wenn du das JDK installierst das JRE 3 mal drauf : jdk/bin , jdk/jre/bin und jre/bin.

zum ClassPath)
Du hast nicht ernsthaft deinen CP explizit auf das JDK gelegt oder ? Mal davon abgesehen das das JDK/JRE weis wo seine Klassen liegen werden diese meist dynamisch als extensions geladen und der CP wird damit eh ignoriert. Also hat das JDK / JRE im CP nichts zu suchen *woher hast du diesen schwachsinn ?*

zum "nicht Installiert")

Ähm ... FAIL ? ... Nein ernsthaft : FAIL ??? ... Wenn du schon unter Windows bist weis ich erlich gesagt nicht mal wo du eine gelinkte Variante vom JDK her hast. Sowas gibt es nur für Unix. Und einfach Software von einem Rechner auf einen Anderen ziehen ... nun das sowas nicht geht wissen wir spätestens seit dem BlueScreen bei der Vorstellung von Win98.


----------



## theuserbl (22. Aug 2011)

TheRealSpikee hat gesagt.:


> zu 1)
> Warum reicht es bei dir nicht wenn nur das JDK drin steht ? Mal so als Tipp : im jdk/bin - Ordner ist das komplette JRE ebenfalls enthalten , sowie im unter-ordner jdk/jre/bin ...



Ich denke mal es liegt dadran, daß bei einer Installation des JRE unter Windows die Dateien C:\Windows\system32\java.exe , C:\Windows\system32\javaw.exe und C:\Windows\system32\javaws.exe erstellt werden. Bei der Installation eines JDK geschieht es glaube ich nicht.
Bin mir aber nicht ganz sicher, da ich nun nicht extra zu Testzwecken das Betriebssystem wechseln und Java neu installieren will.

Auf jeden Fall existiert daher selbst bei der Installation des JDKs bloß "java" als automatisch gefundener Befehl. Der Compiler JavaC muß explizit mit Pfad ( "C:\Programme\Java\jdkxxxx\bin\javac.exe Programm.java" ) aufegrufen werden oder aber man setzt die PATH-Umgebungsvariabe im System ( "set PATH=%PATH%;C:\Programme\Java\jdkxxxx\bin" ). Wobei es auch noch über das Konfigurationsmenü von Windows möglich ist, die Umgebungsvariable dauerhaft zu setzen. Aber da müßte ich erst nachgucken.Ändert sich auch bei jeder Windows-Version wie es geht. Mit AUTOEXEC.BAT aus DOS-Zeiten ist ja längst nichts mehr. Und unter Linux wäre es u.a. ~./.bashrc




TheRealSpikee hat gesagt.:


> Du hast also wenn du das JDK installierst das JRE 3 mal drauf : jdk/bin , jdk/jre/bin und jre/bin.



Zumindest in jdk/jre/lib sind nötige Dateien, die es in jdk/lib _nicht_ gibt.


Grüße
theuserbl


----------

