Java Development Tools (JDT) - Release-Informationen

1.0 Einführung
2.0 Bekannte Probleme und Einschränkungen
   2.1 Java-Programme mit anderen Zeichen als denen des Lateinischen Alphabets 1 in Paket- oder Klassennamen ausführen
   2.2 Fehlende Debug-Attribute
    2.3 Unterbrechungspunkte setzen
   2.4 Sofortige Codeersetzung verwenden
   2.5 Scrapbook
   2.6 Debug bei langsamen Verbindungen
   2.7 Geprüfte Werte aktualisieren
   2.8 Native Methoden überspringen, die E/A-Operationen ausführen
   2.9 Nach Referenzen auf Konstantenfelder suchen
   2.10 Java-Kompiliereinheiten außerhalb des Erstellungsklassenpfads
    2.11 Beendigung von VM und von Prozessen auf IBM 1.3 JVM unter Linux 
   2.12 Aktionen zum Ändern von schreibgeschützten Dateien
   2.13 Java-Code-Schablonen
   2.14 Importverwaltung und Importe von Standardpaketen
   2.15 Aktion 'Javadoc hinzufügen' für Felder
   2.16 Javadoc-Kurzinfo im Java-Editor
   2.17 HTML-Code > wird an Stelle von > in neuer Java-Klasse angezeigt
    2.18 Ausführen oder Debug einer Klasse in einem Projekt mit GB18030-Zeichen im Projektnamen nicht möglich
    2.19 Debug von Stacküberläufen nicht möglich
    2.20 Einschränkung der Auswertung   
    2.21 Unterbrechungspunkte außerhalb des Erstellungsklassenpfads  
    2.22 Schnellkorrektur und Importe von Standardpaketen   
    2.23 Die Aktionen Ausschneiden, Kopieren und Einfügen funktionieren nicht bei verlinkten Ressourcen in Sichten, die Java-Elemente anzeigen
    2.24 Java-Arbeitssets funktionieren nicht korrekt bei Elementen aus dem Container der JRE-Systembibliothek   
    2.25 JavaDoc kann nicht für Pakete mit GB18030-Zeichen im Namen generiert werden
    2.26 Verlinktes Bearbeiten funktioniert nicht korrekt im Überschreibmodus
    2.27 Schablone für die Generierung von CATCH-Block-Code muss mit einer neuen Zeile (newline) enden, wenn die letzte Zeile ein Zeilenkommentar ist
    2.28 Problem beim Öffnen des Klassendateieditors

1.0 Einführung

Der vorliegende Abschnitt enthält Informationen zu bekannten Problemen und Einschränkungen in Bezug auf Java-Entwicklungstools.

2.0 Bekannte Probleme und Einschränkungen

2.1 Java-Programme mit anderen Zeichen als denen des Lateinischen Alphabets 1 in Paket- oder Klassennamen ausführen

Beim Ausführen von Java-Programmen mit anderen als lateinischen Zeichen im Paket- oder Klassennamen wird möglicherweise der Fehler java.lang.NoClassDefFoundError ausgegeben. Als Umgehung können Sie die Klassendateien als JAR-Datei packen und das Programm aus der JAR-Datei anstatt direkt vom Dateisystem ausführen. 

2.2 Fehlende Debug-Attribute

Klassendateien müssen mit Debug-Attributen kompiliert sein, damit der Debugger Zeilennummern und lokale Variablen anzeigen kann. Häufig sind Klassenbibliotheken (z. B. rt.jar) ohne vollständige Debug-Attribute kompiliert. Daher sind lokale Variablen und Methodenargumente für diese Klassen im Debugger nicht sichtbar.

2.3 Unterbrechungspunkte setzen

Im Allgemeinen lässt der Debugger es nicht zu, dass Sie Unterbrechungspunkte auf Codezeilen setzen, die nicht ausführbar sind (Kommentare, Leerzeilen usw.). In einigen Fällen lässt der Debugger jedoch Unterbrechungspunkte auf Codezeilen zu, die nicht ausführbar sind. Beispielsweise lässt der Debugger zu, dass ein Unterbrechungspunkt auf eine Variablendeklaration gesetzt wird, die keinen Initialisierungsoperator enthält. Beachten Sie, dass aktivierte Unterbrechungspunkte, die erfolgreich auf einer ausführbaren Zeile in einer laufenden (debugbaren) VM installiert wurden, mit einem Haken angezeigt werden. Unterbrechungspunkte, die ohne Haken angezeigt werden, sind nicht in einer laufenden (debugbaren) VM installiert.

2.4 Sofortige Codeersetzung verwenden

Die sofortige Codeersetzung wird von VMs von JDK 1.4.x und von IBMR J9-VMs unterstützt. Die sofortige Codeersetzung ist auf Änderungen beschränkt, die nicht die Form einer Klasse betreffen. Das heißt, Änderungen in bestehenden Methoden werden unterstützt, das Hinzufügen oder Entfernen von Membern wird jedoch nicht unterstützt.

Die sofortige Codeersetzung und Step-Operationen auf VMs von JDK 1.4.0 sind unzuverlässig. 

2.5 Scrapbook

Das Setzen eines Unterbrechungspunkts innerhalb einer Scrapbook-Seite wird nicht unterstützt.

Wenn Code im Scrapbook ausgeführt wird, der direkt oder indirekt einen System.exit(int) aufruft, kann die Auswertung nicht abgeschlossen werden. Dies führt dazu, dass ein Stack-Trace für eine Ausnahme com.sun.jdi.VMDisconnectedException im Scrapbook-Editor angezeigt wird.

Das Beenden einer Scrapbook-Seite, während eine Auswertung läuft, führt zum Anzeigen einer Ausnahme com.sun.jdi.VMDisconnectedException im Scrapbook-Editor.

2.6 Debug bei langsamen Verbindungen

Eine globale Java-Debug-Vorgabe gibt das Zeitlimit für den Debugger an. Dabei handelt es sich um die maximale Dauer, die der Debugger auf eine Antwort von der Ziel-VM wartet, nachdem er eine Anforderung an diese VM gestellt hat. Bei langsamen Verbindungen ist es möglicherweise erforderlich, dass dieser Wert erhöht wird. Der Zeitlimitwert kann über die Benutzervorgabenseite Java > Debug bearbeitet werden. Die Änderung des Zeitlimitwerts gilt nur für nachfolgend gestartete VMs, nicht aber für bereits aktive virtuelle Maschinen.

2.7 Geprüfte Werte aktualisieren

Wenn das Ergebnis eines ausgewerteten Ausdrucks im Debugger geprüft wird, ist wichtig zu beachten, dass das angezeigte Ergebnis das Ergebnis dieses Ausdrucks zum Zeitpunkt der Auswertung ist. Wenn Sie beispielsweise einen einfachen Integerzähler (primitiven Datentyp) prüfen, ist der auf der Sicht für Ausdrücke angezeigte Wert der Wert zum Zeitpunkt der Ausdrucksauswertung. Während der Zähler im aktiven Programm geändert wird, ändert sich das geprüfte Ergebnis nicht. Der Grund hierfür liegt darin, dass die Sicht den Wert nicht an eine Variable gebunden anzeigt. Statt dessen zeigt sie den Wert eines Ausdrucks an, und der Wert eines primitiven Datentyps kann sich nicht ändern. Wenn ein Ausdruck jedoch zu einem Objekt führt, werden die Felder dieses Objekts im Untersuchungsprogramm aktualisiert, wenn sie im aktiven Programm geändert werden (da der an Felder in einem Objekt gebundene Wert sich ändern kann).

2.8 Native Methoden überspringen, die E/A-Operationen ausführen

Wenn der Debugger native Methoden überspringt (Step over), die E/A-Operationen für System.out bzw. System.err ausführen, wird die Ausgabe möglicherweise nicht unmittelbar angezeigt, es sei denn, die native Methode führt eine flush-Operation für den Ausgabepuffer aus.

2.9 Nach Referenzen auf Konstantenfelder suchen

Die Suchfunktion findet keine Referenzen auf Konstantenfelder innerhalb von Binärdateien, da die Java-Sprachspezifikation vorgibt, dass Konstantenfeldwerte in die Bytecodes der Klassendateien eingebettet werden und somit keinen Hinweis auf eine Feldreferenz hinterlassen.

2.10 Java-Kompiliereinheiten außerhalb des Erstellungsklassenpfads

Wenn eine Kompiliereinheit mit Kompilierungsproblemen aus dem Java-Erstellungsklassenpfad verschoben wird, bleiben die Java-Probleme für immer bestehen. Der Grund hierfür liegt darin, dass die Kompilierungsproblemliste nicht aktualisiert wird, weil sie nicht mehr erneut kompiliert wird. Das Umbenennen einer *.java-Datei in eine Datei mit einem anderen Dateierweiterungssuffix führt zu demselben Problem. 

2.11 Beendigung von VM und von Prozessen auf IBM 1.3 JVM unter Linux 

Das Beenden eines Start-, Debugziel- oder Systemprozesses, der einem Debugziel zugeordnet ist, das auf der IBM 1.3 JVM auf der Linux-Plattform ausgeführt wird, funktioniert nicht, wenn das zugeordnete Debugziel einen ausgesetzten Thread hat. Um solche Debugziele aus der Debug-UI zu entfernen, wählen Sie im Kontextmenü der Debugsicht die Optionen zum Beenden und Entfernen aus (oder verwenden Sie die Direktaufruftaste zum Löschen). Zugeordnete Systemprozesse im Betriebssystem werden möglicherweise nicht korrekt bereinigt. Verfügt ein Debugziel über keine ausgesetzten Threads, funktioniert die Beendigung korrekt.

2.12 Aktionen zum Ändern von schreibgeschützten Dateien

Die Aktionen im Menü Quelle (z. B. Getter und Setter generieren) sind stets inaktiviert, wenn es sich um eine schreibgeschützte Datei handelt. Dies ist momentan auch dann der Fall, wenn der Repository-Provider das automatische Entnehmen von Dateien bei Änderung unterstützt.

2.13 Java-Code-Schablonen

Sie dürfen innerhalb eines Kommentars in einer Java-Code-Schablone nicht ${CURSOR} verwenden (Fenster > Benutzervorgaben > Java > Schablonen). 

2.14 Importverwaltung und Importe von Standardpaketen

Die Importverwaltung übernimmt keine Importe von Standardpaketen. Beachten Sie, dass das Importieren von einem Standardpaket in JDK 1.4 nicht mehr unterstützt wird. 

2.15 Aktion 'Javadoc hinzufügen' für Felder

Die Aktion Javadoc hinzufügen funktioniert nicht für Felder.

2.16 Javadoc-Kurzinfo im Java-Editor

Die Javadoc-Kurzinfo, die angezeigt wird, wenn der Cursor im Java-Editor auf Kennungen bewegt wird, behandelt Links innerhalb von Javadoc-Kommentaren nicht richtig. 

2. 17  HTML-Code > wird an Stelle von > in neuer Java-Klasse angezeigt

Wenn Sie eine neue Java-Klasse erstellen, lautet der generierte Kommentar wie folgt:

Folgendes auswählen, um die Schablone für die erstellte Datei zu ändern: Fenster > Benutzervorgaben > Java > Codegenerierung > Code und Kommentare.

Der HTML-Code für das Zeichen 'größer als' (>) wird an Stelle des eigentlichen Zeichens verwendet. Der Kommentar sollte folgendermaßen aussehen:

Folgendes Auswählen, um die Schablone für die erstellte Datei zu ändern: Fenster > Benutzervorgaben > Java > Codegenerierung > Code und Kommentare.

2.18 Ausführen oder Debug einer Klasse in einem Projekt mit GB18030-Zeichen im Projektnamen nicht möglich

Die meisten Klassenbibliotheken unterstützen die Erstellung eines Systemprozesses (mit java.lang.Runtime.exec(...)) nicht korrekt, wenn die angegebene Befehlszeile GB18030-Zeichen enthält. Diese Einschränkung bedeutet, dass der Debugger Anwendungen nicht starten kann, wenn die von ihm generierte Befehlszeile GB18030-Zeichen enthält.

2.19 Debug von Stacküberläufen nicht möglich

Wenn eine Debugsitzung beim Auftreten einer java.lang.StackOverflowError-Ausnahmebedingung (als Reaktion auf einen Unterbrechungspunkt für Ausnahmebedingungen) ausgesetzt wird, kann der Debugger möglicherweise keine Debuginformationen von der Ziel-JVM abrufen. Darüber hinaus kann es sein, dass der Debugger keine zuverlässige Interaktion mit der Ziel-JVM über diesen Punkt hinaus gewährleisten kann.

2.20 Einschränkung der Auswertung

Der Debugger verwendet in der Ziel-JVM Threads zum Ausführen von Auswertungen (und zwar sowohl von expliziten Auswertungen, die der Benutzer anfordert, wie auch von impliziten Auswertungen wie zum Beispiel dem Aufruf von toString() in der Sicht Variablen). Die JDI (Java Debug Interface, Java-Debugschnittstelle) erfordert, dass der Thread, in dem eine Auswertung ausgeführt wird, durch ein Benutzerereignis ausgesetzt werden muss (das bedeutet, durch eine Unterbrechungspunkt- oder eine Step-Anforderung. Auswertungen können nicht für Threads ausgeführt werden, die durch die Aktion 'Aussetzen' ausgesetzt wurden. Wenn ein Unterbrechungspunkt für die Aussetzung der JVM und nicht nur für die Aussetzung eines einzelnen Threads konfiguriert wurde, gilt außerdem, dass diejenigen Threads, die den Unterbrechungspunkt nicht angetroffen haben, keinen gültigen Status zum Ausführen einer Auswertung aufweisen. Wird versucht, eine Auswertung in einem Thread auszuführen, der keinen gültigen Status zum Ausführen einer Auswertung aufweist, wird eine Fehlernachricht mit dem folgenden Inhalt angezeigt: "Thread muss zum Ausführen des Methodenaufrufs durch Step oder Unterbrechungspunkt ausgesetzt sein".

2.21 Unterbrechungspunkte außerhalb des Erstellungsklassenpfads

Unterbrechungspunkte können nur für Java-Elemente erstellt werden, die im Erstellungsklassenpfad eines Projekts enthalten sind. Der Java-Debugger löscht automatisch Unterbrechungspunkte, wenn das ihnen zugeordnete Java-Element aus dem Erstellungspfad eines Projekts entfernt wird. Wenn das Java-Debug-Plug-in nicht geladen ist und eine Änderung des Erstellungspfads durchgeführt wird, werden derartige Unterbrechungspunkte im Arbeitsbereich beibehalten und können Fehler verursachen, wenn der Benutzer versucht, in der Sicht 'Unterbrechungspunkte' zu der Datei zu wechseln, die dem Unterbrechungspunkt zugeordnet ist.

2.22 Schnellkorrektur und Importe von Standardpaketen

Die Schnellkorrektur übernimmt keine Importe von Standardpaketen. Beachten Sie, dass das Importieren von einem Standardpaket in JDK 1.4 nicht mehr unterstützt wird.

2.23 Die Aktionen Ausschneiden, Kopieren und Einfügen funktionieren nicht bei verlinkten Ressourcen in Sichten, die Java-Elemente anzeigen

Die Aktionen zum Ausschneiden, Kopieren und Einfügen funktionieren nicht bei verlinkten Dateien und Ordnern in Sichten, die Java-Elemente anzeigen. Dies schließt den Paket-Explorer ein. Dieser Fehler kann umgangen werden, wenn Sie diese Aktionen anstatt dessen von der Sicht 'Navigator' aus verwenden.

2.24 Java-Arbeitssets funktionieren nicht korrekt bei Elementen aus dem Container der JRE-Systembibliothek

Die Anwendung eines Arbeitssets, das vollständig aus Elementen aus dem Container der JRE-Systembibliothek besteht, als Filter für die Sicht 'Pakete' kann dazu führen, dass die Anzeige im Paket-Explorer leer ist.

2.25 JavaDoc kann nicht für Pakete mit GB18030-Zeichen im Namen generiert werden

Die meisten Klassenbibliotheken unterstützen die Erstellung eines Systemprozesses (mit java.lang.Runtime.exec(...)) nicht korrekt, wenn die angegebene Befehlszeile GB18030-Zeichen enthält. Da ein JavaDoc unter Verwendung der ausführbaren JavaDoc-Datei erstellt wird, die mit JDK ausgeliefert wird, schlägt das Generieren des JavaDocs fehl, wenn der Name des Pakets oder der Klasse GB18030-Zeichen enthält.

2.26 Verlinktes Bearbeiten funktioniert nicht korrekt im Überschreibmodus

Das verlinkte Bearbeiten wird zum Umbenennen von Elementen innerhalb einer einzigen Kompiliereinheit und für Schablonen verwendet, in denen dieselbe Schablonenvariable mehrmals enthalten ist. Das verlinkte Bearbeiten funktioniert im Überschreibmodus nicht korrekt.

2.27 Schablone für die Generierung von CATCH-Block-Code muss mit einer neuen Zeile (newline) enden, wenn die letzte Zeile ein Zeilenkommentar ist

Wenn es sich bei der letzten Zeile in einer Schablone für die Generierung von CATCH-Block-Code um einen Zeilenkommentar handelt, muss die Zeile mit einer neuen Zeile (newline) beendet werden. Andernfalls endet die geschweifte abschließende Klammer in der Kommentarzeile und verursacht dadurch einen Kompilierfehler.

2.28 Problem beim Öffnen des Klassendateieditors

Wenn auf der Seite Plug-in-Entwicklung > Java-Erstellungspfadsteuerung die Benutzereinstellung "Klassenpfadcontainer verwenden" aktiviert wurde, ist es eventuell nicht möglich, einen Klassendateieditor für eine Klassendatei zu öffnen, die in einer JAR im Container "Erforderliche Plug-in-Einträge" enthalten ist. Eine Möglichkeit, diesen Fehler zu umgehen, besteht darin, die Klassendatei im Paket-Explorer zu erweitern. Dadurch wird die Struktur der Klassendatei so angezeigt, wie es normalerweise im Editor der Fall wäre. Eine andere Möglichkeit ist, die Quelle der JAR-Datei zuzuordnen, sofern eine ZIP-Datei mit dem Quellcode für die JAR verfügbar ist.

Führen Sie die folgenden Schritte aus, um die Quelle einer JAR im Container "Erforderliche Plug-in-Einträge" zuzuordnen:

  1. Wählen Sie im Paket-Explorer das Projekt aus und wählen Sie im Kontextmenü die Optionen Projekt > Eigenschaften aus.
  2. Wählen Sie die Seite Java-Erstellungspfad aus.
  3. Wechseln Sie zur Seite Bibliotheken.
  4. Erweitern Sie das Element "Erforderliche Plug-in-Einträge".
  5. Erweitern Sie das Element für die JAR.
  6. Wählen Sie Quellenzuordnung aus und klicken Sie auf Bearbeiten.
  7. Geben Sie die Position der entsprechenden Quellen-ZIP-Datei ein.
  8. Klicken Sie abschließend auf OK.

Zurück zur Readme-Hauptdatei

>