# Jar File über Kommandozeile starten



## RudiRakete (5. Mai 2009)

Hallo,
ich habe ein kleines Java-Progrämmchen, dass E_mails verschickt. Jetzt habe ich dieses Programm als jar exportiert, aber per Doppelklick passiert nichts. Also habe ich mir gedacht, dass ich es mal über die Kommandozeile starten könnte, da mir dort doch Fehlermeldungen angezeigt werden, oder?

Allerdings kommt nach folgender Eingabe nur eine "falsche" Meldung:

java -jar D:\Datei.jar

Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion'
has value '1.4', but '1.6' is required.
Error: could not find java.dll
Error: could not find Java 2 Runtime Environment.

Weiß einer wie ich das beheben kann?


----------



## Beni (5. Mai 2009)

Registry key??? Re-installier mal dein JRE/JDK.


----------



## RudiRakete (5. Mai 2009)

Hmm, ich verstehe die Meldung nur nicht so ganz, da wir hier 1.4 benutzen und nicht 1.6 !?!


----------



## RudiRakete (5. Mai 2009)

Hab die 1.4 jetzt nochmal neu installiert, aber gleiche Meldung :-/


----------



## HoaX (5. Mai 2009)

Musst du unbedingt 1.4 verwenden? Wenn nicht dann deinstallier die doch und installier die 1.6!


----------



## RudiRakete (6. Mai 2009)

So, habe jetzt die 1.6er deinstalliert bekommen und habe wieder die 1.4er drauf. Jetzt habe ich auch endlich meine Fehlermeldung die ich sehen wollte.

Leider sagt die mir überhaupt nichts, weil ich in meinem Programm überhaupt nichts mit zip mache :-/

Exception in thread "main" java.util.zip.ZipException: Zugriff verweigert
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)
        at java.util.jar.JarFile.<init>(Unknown Source)

Kann damit ein Kenner etwas anfangen?

@Hoax: Jo, ich muss die 1.4 verwenden. Leider no other chance :-/


----------



## RudiRakete (7. Mai 2009)

Hmm, so langsam verzweifel ich mal so richtig.
Habe gestern noch bis spät abends an allem rumprobiert und das halbe Internet durchsucht, aber ich find net raus, wieso beim Ausführen der jar diese Fehlermeldung kommt :-/


----------



## Ebenius (7. Mai 2009)

Eine JAR-Datei ist auch nur eine ZIP-Datei mit einem Manifest. Daher: Du lädts also eine ZIP-Datei. Vielleicht ist die ja für den Nutzer nicht lesbar und Java motzt rum. Ist der StackTrace oben vollständig, oder hast Du ihn irgendwie gekürzt?

Ebenius


----------



## RudiRakete (7. Mai 2009)

Ach so, okay.
Also bei meinen Internetrecherchen bin ich darauf gestoßen, dass mein Problem wohl höchstwahrscheinlich die ext. Jars in meinem Projekt sind.
Ich habe im BuildPath über "Add External Jars" 3 jars (activation.jar, mailapi.jar, smtp.jar) eingebunden. Hier scheint wohl irgendein Problem später beim Ausführen vorzuliegen. Leider habe ich keine Ahnung was da zu machen ist. Mit diversen Tipps aus dem Internet bin ich nämlich leider nicht weiter gekommen.

Zum StackTrace: Ne, der war so. Den habe ich so aus meiner Kommandozeile herauskopiert.


----------



## Ebenius (7. Mai 2009)

Wenn der StackTrace genau so war, kommt das Problem bereits beim Initialisieren der JVM (glaube ich). Probier mal den Schalter "-verbose:class" beim _java_-Aufruf. Der gibt Dir gegebenfalls Informationen, beim Laden welcher Klasse der Fehler auftritt.

Ebenius


----------



## RudiRakete (7. Mai 2009)

So, das habe ich jetzt einmal versucht, jetzt steht das da!?!?!?!


```
Exception in thread "main" java.lang.UnsupportedClassVersionError: src/starteMail (Unsupported major.minor version 49.0)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClassInternal(Unknown Source)
```

Edit: Wobei diese Meldung jetzt auf einmal auch kommt, wenn ich das verbose weglasse !?!? Halleluja, so langsam werde ich mal super verwirrt ???:L;(


----------



## Ebenius (7. Mai 2009)

RudiRakete hat gesagt.:


> So, das habe ich jetzt einmal versucht, jetzt steht das da!?!?!?!


Das kann nicht an "-verbose:class" liegen. ???:L

Diese Exception sagt Dir, dass Deine Java-Klassen mit Java-Class-Version 49 (ab Java 5) erstellt sind, die JVM aber diese Version nicht unterstützt. Benutzt Du Java 1.4? Was sagt das? 
	
	
	
	





```
java -version
```

PS: Ausgaben der Konsole bitte in CODE-Tags einschließen (hab ich eben editiert): [noparse]
	
	
	
	





```
Hier die Ausgabe
```
[/noparse]

Ebenius


----------



## RudiRakete (7. Mai 2009)

Hatte dasselbe gerade auch gemerkt und oben noch ergänzt. Sorry...

Da steht das:


```
C:\>java -version
java version "1.4.2_04"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_04-b05)
Java HotSpot(TM) Client VM (build 1.4.2_04-b05, mixed mode)
```


----------



## Ebenius (7. Mai 2009)

Das bedeutet, Du benutzt weiterhin die Java 1.4-Maschine und nicht die neuinstallierte Java 6-Maschine.

Nachtrag: Was sagt das da? 
	
	
	
	





```
C:\>where java
```

Ebenius


----------



## RudiRakete (7. Mai 2009)

Hmm, ich habe doch gar keine JavaMaschine neu installiert!?!?!


```
C:\>where java
C:\WINDOWS\system32\java.exe
C:\Program Files\Oracle\jre\1.3.1\bin\java.exe
```


----------



## Ebenius (7. Mai 2009)

RudiRakete hat gesagt.:


> Hmm, ich habe doch gar keine JavaMaschine neu installiert!?!?!


Stimmt. Aber erzähl das mal meinem Optiker. 

Okay. Es soll also mit Java 1.4 laufen. Wie hast Du die Klassen erzeugt? Per javac-Kommando oder per Eclipse, oder ... Bei javac kannst Du die Schalter "-source 1.4 -target 1.4" benutzen, im Eclipse kannst Du in den Compiler-Einstellungen die "Code Compliance" entsprechend einstellen.

Ebenius


----------



## RudiRakete (7. Mai 2009)

Also die Klassen wurden autoamtisch im Eclipse erzeugt. Da habe ich nichts über die Kommandozeile versucht ;-)
Ich schaue mal, was ich in den Eclipse-Einstellungen machen kann...


----------



## RudiRakete (7. Mai 2009)

Wow, geilo. Das ist klasse gewesen 

In meinen CompilerSettings war irgendwie (warum auch immer) eingestellt, dass die 5.0 verwendet werden sollte. Habe auf 1.4 umgestellt und jetzt läuft es.

Vielen Dank für die Hilfe, darauf wäre ich alleine NIE gekommen.

Wünsche einen schönen Tag!


----------

