# Standardprogramm für ausführbare jar-Datei



## beastofchaos (30. Dez 2012)

Hi Community,
Ich habe wohl mal irgendwann an dem Standardprogramm für jar-Dateien rumgespielt und kann diese jetzt nicht mehr öffnen. Habe es dann im "Öffnen mit..."-Dialog mit "java", "javaw"(das müsste es sein) und "javaws" versucht.

Verwirrend ist nur, dass ich im Ordner "C:\Program Files (x86)\Java" ein Ordner "jre7" mit den Unterverzeichnissen "bin" und "lib" habe, 
aber in "C:\Program Files\Java" nochmal fünf weitere Ordner drin hab, wobei drei davon ein "jdk" sind:

- jdk1.7.0_05
- jdk1.7.0_07
- jdk1.7.0_09
- jre6
- jre7

die vorherigen zwei jdk's lösch ich natürlich ,weil ich ja eh die aktuelle(Update 9) habe.
Welche der insgesamt drei vorhandenen jre-Ordner nutzt mein PC jetzt für die Wiedergabe von jre, bzw. wieso funktioniert es nicht mit irgendeiner dieser drei. Wenn ich im CMD "javaw -jar [...]" funktioniert alles.
Ich müsste irgendwie herausfinden, welche javaw-Datei für diesen Befehl genutzt wird.


Gruß, Thomas


----------



## JCODA (30. Dez 2012)

Bei mir waren Jar-Dateien auch eine Weile nicht ausführbar, bis ich mal gegoogled hatte: 

windows - java can run jar from cmd but not by double clicking - Stack Overflow



> OK, I found the answer somewhere else but ran into this issue again so came here via google.
> The solution is...
> 
> Open up regedit.exe
> ...



Falls es noch hilft, bei mir steht in dem Schlüssel _HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command_


```
"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
```


----------



## beastofchaos (30. Dez 2012)

Also hab es jetzt mit 

```
"C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
```
und

```
"C:\Program Files (x86)\Java\jre7\bin\javaw.exe" -jar "%1" %*
```
probiert.
Bei beiden Malen passiert nichts, wenn ich Doppelklicke mache.

In der Konsole funktioniert es von beiden Verzeichnissen aus... Ratlosigkeit

Danke aber bis dahin schonmal,
Gruß Thomas


----------



## Camill (30. Dez 2012)

Das ganze geht auch über den Explorer, man muss nicht direkt in die Registry eingreifen.

Win XP:
[c]Extras -> Ordneroptionen -> Dateitypen[/c]
Da dann nach 'JAR' suchen.
Über 'Ändern' kannst du auswählen mit welchem Programm die Jar Dateien verknüpft werden.


----------



## beastofchaos (30. Dez 2012)

Und wie sähe das dann in Win7 aus? Ich sehe hier nur die Option "Standardprogramme" im Menü. Da gehe ich auf den zweiten Punkt "Dateitypen oder Protokoll einem Programm zuordnen.

Ich sehe eine Liste von verschiedenen Dateiendungen, gehe also zu .jar und klick doppelt drauf. Es öffnet sich der typische "Öffnen mit..."-Dialog, mit dem ich es schon so oft probiert habe.

Laut der zweiten Antwort in diesem Beitrag liegt das daran, dass Windows etwas fehlinterpretiert und nicht automatisch ein "-jre" beim Aufruf einfügt. Wenn ich doppelt draufklicke würde also in dem typischen cmd-Befehl den wichtigsten Teil "-jre" einfach auslassen. Logisch ,dass es deswegen nicht geht, aber wie fixe ich dieses Problem? Die Lösung, die da genannt wird, habe ich ja bereits erfolglos angewendet (registry anpassen).

Thomi

PS:
Auf dieser Seite gibt es eine Anleitung bezüglich der Erkennung der Dateiendung:
Ich soll da anscheinend irgendetwas an dem Verzeichnis "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" einstellen, wobei es da um exe-Dateien geht. Mit jar müsste es aber das gleich sein, bloß finde ich in diesem Verzeichnis keine jar-Anmerkung(darüber leigt ".ini" und darunter ".jfif").

Kann jemand bei sich schauen, ob er da einen jar-Eintrag hat?


----------



## Kevin94 (30. Dez 2012)

Hab mich selbst schon mit der Verknüpfung von Dateiendungen mit Programmen unter Windows beschäftigt. Insgesamt gibt es afair drei Orte in der Registry wo man solche Schlüssel anlegen kann, zum einen HKEY_CLASSES_ROOT, dann HKEY_LOCAL_MACHINE\SOFTWARE\Classes und noch einer, den ich vergessen hab. Dort liegen bei mir auch (in beiden) die Keys für die Extension .jar (Mit identischen Werten).
Damit eine Zuordnung funktioniert, müssen insgesamt zwei Keys vorhanden sein: einer mit der Dateiendung und als Wert den Namen des Ordners mit den Zugeordneten Informationen (Dieser Key fehlt bei dir offensichtlich) und dann der Key in dem die Informationen und das Programm mit dem Ausgeführt werden soll stehen, die scheinen zu stimmen.

Du müsstest in deiner Registry also Folgende Keys haben:

```
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.jar = jarfile
```


```
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile
```


```
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\jarfile\shell\open\command = ...javaw.exe ...
```

und die selben auch unter HKEY_CLASSES_ROOT. Wenn diese Keys sich wiedersprechen kann es sein, dass Windoof nicht zurechtkommt und wenn der erste nirgends zu finden ist, funktioniert es sowieso nicht.


----------



## beastofchaos (30. Dez 2012)

Habe die Einträge genauso, wie du beschrieben hast. Ich denke, das dritte Verzeichnis ist "HKEY_CURRENT_USER > Software > Microsoft > Windows > CurrentVersion > Explorer > FileExts"

Kannst du mal schauen, ob du da auch ein Verzeichnis namens ".jar" oder "jarfile" hast? Im Gegensatz zu den anderen fehlen da diese Einträge.

Gruß, Thomas


----------



## Kevin94 (30. Dez 2012)

Nein beim löschen würde er nicht neuerstellen. Die Keys werden höchstens bei einer Neuinstallation von JDK/JRE neu generiert. Windoof kümmert sich rein gar nicht darum, ob diese Keys vorhanden und sinnvoll sind. Wenn so ein Key existiert, wird die Datei auf die angegebene Weise ausgeführt, wenn nicht dann eben nicht.
Anzumerken ist noch, dass Änderungen erst wirksam werden nach dem man den Explorer neugestartet hat. Am einfachsten geht das durch einen Neustart, man kann aber auch im Taskmanager den Prozess killen und neustarten (im Taskmanager über ausführen, da alle anderen Fenster und der Desktop weg sind).

In dem dritten Verzeichniss sind bei mir folgende Keys vorhanden:

```
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar]

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithList]
"a"="javaw.exe"
"MRUList"="acb"
"b"="firefox.exe"
"c"="jd-gui.exe"

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\OpenWithProgids]
"jarfile"=hex(0):

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jar\UserChoice]
"Progid"="jarfile"
```

Aber kein Key mit Namen "jarfile"


----------



## beastofchaos (30. Dez 2012)

Diese Einträge gibt es bei mir nämlich nicht. Ich füge die bei mir mal genauso ein und meld mich nochmal.


----------



## tröööt (30. Dez 2012)

sorry .. aber verstehe einfach nicht warum du dir das so umständlich machst ...

einfach in der systemsteuerung alles was mit java zu tun hat sauber de-installieren ... dann alle verzeichnisse bereinigen ... und zur not die registry noch cleanen ...

dann von oracle einfach JDK7upate10 sowohl in x86 als auch x64 laden ... erst das x86 installieren ... dann das x64 ... PATH und CLASSPATH anpassen ... und dann is gut ...

das ist auf jeden fall deutlich schneller, einfacher und sauberer als da stunden lang selbst was im system basteln zu wollen


----------



## beastofchaos (30. Dez 2012)

Wie gedacht, hat das nicht geklappt...

Hab alles deinstalliert (3 jre- und 2 jdk-Versionen) und restliche JAVA-Verzeichnisse gelöscht, regedit hab ich nicht angefasst. 
Nur was meinst du mit "PATH und CLASSPATH anpassen"? 

Unter "Öffnen mit..." stand dann bei jar-Dateien keine JAVA-Anwendung mehr in der Liste (nur noch WinZip). 

Hab dann die beiden Versionen in vorgegebener Reihenfolge installiert. Ab dem Moment werden jar-Dateien wie vorher mit einer javaw.exe war ausgeführt, aber mit dem falschen Befehl ("Das -jar fehlt warsch. im Konsolenbefehl").

Gruß, Thomas

Edit: Hab grad alle drei mir bekannten Einträge in HKCR, HKCU und HKLM in der registry gelöscht. Es ändert sich nichts - ich werde den PC morgen neustarten und mal schaun, wie es dann aussieht. Hab ihr sonst noch Ratschläge, weil dieser Fehler, anscheinend nicht mit der Registry begründet ist.

Vll kann ja jem mal ausprobieren, was passiert, wenn er bei sich jar- Anwendungen über "Öffnen mit..." mit javaw.exe öffnen lässt. Ob da der Befehl entsprechend mit einem -jar ergänzt wird.


----------



## tröööt (31. Dez 2012)

PATH und CLASSPATH sowie das JDK haben dich eher nur als entwickler zu interessieren ... als normaler anwender sollte man nur das JRE laden und sonst die finger vom rest lassen ...

das ein re-install nicht alle probleme gelöst hat würde ich jetzt nicht auf java und dessen setup schieben ... sondern vermute das im system selbst gröbere fehler vorhanden sind die dies als seiten effekt haben ...

gerade pack-programme wie winzip / winrar und andere überschreiben JAR gerne mal da es in dem sinne nur ein ZIP archiv ist ...
also auch hier mal in die einstellungen gucken ob nicht in einem dieser programme falsche einstellungen vorhanden sind ...

mal von abgesehen : wie kommst du darauf das beim call nur "javaw FILE.jar" statt richtigerweise "javaw -jar FILE.jar" gecallt wird ? irgendwelche call-stacks ?

auch natürlich zu beachten : consolen-apps sind natürlich von der console zu starten ... nur GUI-apps die auf das terminal verzichten machen überhaupt erst mit javaw sinn ...

zusätzlich : die meisten LIBs sind keine anwendung selbst ... und verfügen in der regel auch über keine MAIN-class ... können also daher auch normalerweise nicht selbst direkt ausgeführt werden ...

bei weiteren fehlern mit dateityp-zuordnung sollte ein re-formatieren der system-partition und erneutes aufspielen von windows in betracht gezogen werden da schwere systemfehler nicht auszuschließen sind ...


----------



## beastofchaos (31. Dez 2012)

1. Ich habe nie JAVA als Ursache genannt. Tatsaechlich denk ich, dass was in Windows falsch eingestellt

2. Wenn ich gerade meine jar-Datei mit Eclipse erstellt habe (runnable jar) und sie dann mit konsole ausfuehren lasse klappts. Nur der doppelklick klapt nicht. wieso ich glaube, dass beim konsolenbefehl per doppelklick falsche syntax bebutzt wird, habe mich bereits vorher gesagt. In diesem Thread wird das gleiche Problem besprochen und moegliche ursachen genannt. Es wird dabei kein Fehler ausgegeben weil es kein fehler ist javaw.exe mit diesem zielpfad zu starten, bloß macht die nichts, wenn nicht angegeben ist, dass die Datei als jar geöffnet werden soll.

Wenn du zu einem Dateityp ein Standardprogramm auswaehlst, passiert genau das gleiche - der konsolebefehl wuerde nur Anwendungspfad und Zieldatei enthalten.

An Eclipse oder der main-Klasse kanns nicht liegen, weil ich es auch bei älteren Projekten getestet habe. 

Notiz: Manchmal erscheint kurz die Konsole und verschwindet beim Doppelklick, aber warsch unnötige Info.

Als Lösung alles neu aufzusetzen, waer mir zu radikal. Ich schau morgen mal nach, ob ich das evtl mit ner passenden Systemwiederherstellung gedeichselt bekomme.

Nacht, Thomas


----------



## tröööt (31. Dez 2012)

naja ... wenn überhaupt passiert bei "javaw" natürlich überhaupt nichts ... da es auch überhaupt kein terminal gibt ...
hier müsste zum testen also erstmal auf "java" gewechselt werden um nach zu sehen ob eventuelle fehlermeldungen kommen ...

denn "java(w) C:\file.jar" führt definitiv zu einem fehler da java ohne ops die einen pfad verlangen grundsätzlich einen klassennamen erwartet ...

wie du ganz am anfang eigentlich auf "javaws" gekommen bist versteh ich nicht ... denn dies ist für JavaWebStart reserviert und erwartet ein JNLP-file ... wäre also eh das falsche binary ...

das windows automatisch nur "EXE %1" als OPEN setzt wenn man dies über den "öffnen mit" dialog auswählt ist mir auch bewusst ... und das läuft so mit java ja leider nicht ... weil eben die ops "-jar" fehlt ...

du könntest mal im terminal folgende befehle testen


```
assoc .jar
```
sollte die ausgabe

```
.jar=jarfile
```
liefern


```
ftype jarfile
```
sollte ungefähr sowas ausgeben

```
jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
```
pfad könnte bei dir abweichen ...

sollten die ausgaben so NICHT kommen ... versuch bitte folgendes ohne an etwas anderem rumzuspielen


```
assoc .jar=jarfile
ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*
```

es kann nämlich auch sein das die quotes um %1 herum fehlen ... und so bei pfaden mit leerzeichen zwei ops entstehen anstatt einem zusammenhängenden pfad ...


sollte auch das nicht zur lösung führen ... dann solltest du wirklich ne systemwiederherstellung versuchen ...

ich persönlich halte nichts davon und habs auch komplett abgeschaltet ... denn ich hab genug platten und platten-platz um bei fehlern mal schnell mein windows platt zu machen ...

sollte auch die systemwiederherstellung wider erwarten kein ergebnis bringen hast du vermutlich größere probleme im systemkern als es hier rüber kommt ... und dann wäre ein plattmachen nicht nur die einfachere variante ... sondern auch die sichere ... denn sowas kann sich auch auf die system-sicherheit auswirken ...
in wie fern man es "radikal" findet ... naja klar nervt es halt alle treiber und software neu zu installieren ... aber wenn man es regelmäßig macht reduziert man seine software auf ein minimum die man grundsätzlich installiert und installiert den rest bei bedarf ..


so ... genug OT ... mehr ideen fallen mir nicht mehr ein ...


----------



## beastofchaos (1. Jan 2013)

Habe alles versucht, was ihr vorgeschlagen habt, abgesehen von einer Systemwiederherstellung (hab keine mehr von vor diesem Fehler) und einer Neuinstallation von Windows. 

Ich werde mir demnächst eh Win8 kaufen. Bis dahin werde ich halt, wenn es nötig ist, die jeweilige jar-Anwedung per Konsole ausführen 

Gruß, Thomas


----------



## ztöööz (1. Jan 2013)

persönlich kann ich von Win8 nur abraten ... es macht sicher sinn auf recht großen tablets ... aber fürs alltägliche arbeiten und vor allem programmieren ist es nichts ... da solltest du besser bei Win7 bleiben ...


----------



## beastofchaos (1. Jan 2013)

Ich weiß. Ich würde es halt bloß umsonst bekommen und ich denke, ich werde mich iwie einarbeiten können - wenn ich es bisher bei meinem Vater probiert hatte, war ich immer total verwirrt, wegen der Oberfläche, der Nutzung von Tastenkombinationen, etc.


----------

