JDK 6 und JDK 7 am selben PC zum Laufen bringen

Hallo Forum

Ich arbeite seit einiger Zeit problemlos mit JDK 7. (Rufe zum Kompilieren und Ausführen javac.exe bzw. java.exe einfach direkt an der Eingabeaufforderung auf.)

Da aber mit JDK 7 kompilierte Programme offenbar nicht in allen Zusammenhängen funktionieren (z. B. Applets von JDK 7 kompiliert funktionieren nicht mit Internet Explorer 8), habe ich mir auch JDK 6 heruntergeladen und zusätzlich installiert
(Genaugenommen: Java™ SE Development Kit 6 Update 31).

Leider funktioniert aber die JDK6 - javac.exe nicht - Ich vermute, dass es daran liegen könnte, dass die javac.exe von JDK 6 versucht, ihre Klassen in den JDK 7 - Ordnern zu finden?

Die javac.exe vom JDK 7 funktioniert immerhin zum Glück weiterhin einwandfrei.

Als Beispiel nun zum Vergleich Aufrufe mit JDK 7 (funktioniert) und JDK 6 (fuinktoniert nicht) :

C:\Programme_Erweitert\Java\JDK7\bin\javac Applet_Bsp_01.java

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/tools/javac/Main
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javac.Main
        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)
Could not find the main class: com.sun.tools.javac.Main.  Program will exit.```

Applet_Bsp_01.java ist nur ein extrem einfaches Hallo-Welt-Applet: 

```import java.applet.Applet;
import java.awt.Graphics;

public class Applet_Bsp_01 extends Applet
{
  public void paint (Graphics g)
  {
    g.drawString ("Hallo, Welt!", 50, 25);
  }
}```

Wie kann ich nun (abwechselnd zu JDK 7) auch JDK 6 verwenden?

Ich habe bereits das Internet durchsucht mit den Suchbegriffen "JDK 6"+"JDK 7", aber leider noch nichts dazu gefunden.

Danke im Voraus

Noch eine Ergänzung: Java 7 kompilieren funktioniert zwar noch, wie schon beschrieben.

Aber die -target Option funktioniert nicht, egal welche Version ich angebe, also egal, ob 1.6, 1.5, 1.4, 1.3 oder sonstwas.
Und zwar auch bei meinem extrem einfachen Hallo-Welt-Applet Applet_Bsp_01 sowie bei einem noch einfacheren Hallo Welt - Beispiel, das nur einen Text auf die Standardausgabe schreibt.

Fehler-Meldung:

C:\Daten\Java_Programme_Eigene>C:\Programme_Erweitert\Java\JDK7\bin\javac Hallo_Welt_5_DOS.java -target 1.6
javac: target release 1.6 conflicts with default source release 1.7

Wozu gibt es die Option -target und wie bringt man sie zum funktionieren?

du musst beim compilieren angeben welche Version deine Quellcodes sind dann sollte das gehen

Aber wie? Mit der Option -target, die laut offizieller Dokumentaton dafür da sein sollte, funktioniert es leider nicht und den Java 6 - Compiler einfach direkt aufrufen über den JDK6 - Ordner leider auch nicht.

nein Target gibt dein Ziel an du musst mit -source oder --source angeben welche Version dein Quellcode hat, zumindest laut deiner Fehlermeldung oben

Super, danke! ::klatsch Jetzt kann ich immerhin mit dem Java 7 - Compiler auch class-Dateien erzeugen, die in Java 6 - Umgebungen laufen können. Endlich kann ich mein Applet auch in meinem Internet Explorer 8 sehen!

Es bringt mir zwar eine Warnung ein:

warning: [options] bootstrap class path not set in conjunction with -source 1.6

Aber es funktioniert.

So kann ich das nicht funktionierende javac.exe im JDK6 - Ordner immerhin umgehen, in dem ich das javac.exe von JDK7 mit dieser Option verwende.

Danke für die Hilfe! :cool: