Advanced Java Services | Eclipse FAQ |
Das folgende ist kein Tutorial, sondern eine kleine alphabetisch geordnete FAQ-Liste. Es sollen hier nur einige nützliche Tipps gegeben werden.
Diese Meldung bekommt man, wenn man eine interne Klasse verwenden will. Ein bekannter Fall ist die Klasse JdbcRowSetImpl aus dem Package com.sun.rowset. Will man ein Objekt vom Typ RowSet initialisieren, so braucht man eine Klasse, die dieses Interface implementiert. Die Klasse com.sun.rowset.JdbcRowSetImpl() ist zwar public, aber nicht Bestandteil der API und deshalb ist das Statement JdbcRowSet jdbcRowSet = new com.sun.rowset.JdbcRowSetImpl(); nicht compilierbar. Eclipse bietet die Möglichkeit diese Einschränkung für ein Projrkt oder auch global aufzuheben. Eine projektspezifische Einstellung ist hier vorzuziehen.
Project -> Properties -> Java Compiler -> Errors/Warnings -> Enable project specific settings (Checkbox aktivieren)
Herunterscrollen.
Forbidden reference (access rules) : Dropdown Menu von Error auf Warning umstellen.
Juno und Kepler, die Nachfolgeversionen von Indigo kommen mit einem neuen Farblayout, das nicht jedermanns Geschmack ist. Auch ich finde das Layout von Indigo besser. Es gibt zwei Möglichkeiten, dies zu ändern und das alte Layout mit den alten Farben wiederherzustellen.
Der sanfte Weg geht über die Einstellungen in Eclipse.
Window -> Preferences -> General -> Appearance
Hier wählt man Classic und man hat annähernd das alte Layout.
Für den radikalen Weg beendet man Eclipse, geht ins Installationsverzeichnis von Eclipse und sucht das Verzeichnis css in
plugins\org.eclipse.platform_4.2.0.v201206081400\css
In diesem Verzeichnis liegen die Stylesheets für die verschiedenen Layouts. Wenn man dieses Verzeichnisses umbenennt, etwa in css.bak, so startet Eclipse nun mit dem originalen Layout von Indigo.
Siehe auch http://blog.sangupta.com/2012/08/change-eclipse-juno-ui-to-match-eclipse.html
Die Ansicht in Eclipse bestehen immer aus mehreren Teilfenstern. Die Debugansicht beispielweise besteht aus fünf Fenstern von denen die meisten auch noch mehrere Tabs haben. Manchmal schließt man ein Teilfenster aus Versehen. Nicht jedes Teilfenster wird unter
Window -> Show View
angeboten. Einfacher ist folgendes
Window -> Reset Perspective...
Den Namen einer Klasse oder Methode oder eines Feldes etc. markieren. Mit F2 erscheint ein großer Tooltip, der der den zugehörigen Auszug aus der API zeigt. Durch erneute drücken von F2 erhält der Tooltip den Fokus und man kann im Tooltip navigieren und Text markieren und kopieren. Mit Shift+F2 wird die komplette Klassendokumentation in einem eigenen Tab angezeigt. Beide Anzeigen werden über http realisiert, Eclipse holt sich die API von java.sun.com . Hat man keine Internetverbindung muß man über Window/Preferences den lokalen Speicherort der API angeben. Wie das genau geht, wird auf der nächsten Seite erklärt.
Projekt markieren -> Run -> Run Configurations -> Arguments
Window -> Preferences -> Run/Debug -> Launching -> 'Save required dirty editors before launching' -> Always auswählen
Im wesentlichen muß man sich nur merken, daß Ansicht auf eclipsisch "Perspective" heißt. Also:
Window -> Open Perspective
Dann die Ansicht auswählen. Die Java-Perspective ist diejenige die wir brauchen. Sie wird auch dann oft verwendet wenn man Servlets bzw. JSP bzw. EJB entwickelt, obwohl es für diese Fälle eine eigene Ansicht (JavaEE) gibt.
Für viele Projekte braucht man zusätzliche Java Archive (*.jar). Es ist praktisch sie in eigenen Bibliotheken abzulegen, dann kann man von jedem Projekt aus darauf zugreifen. Ich habe meine Bibliotheken in meinem Workspaceordner von Eclipse angelegt. Hier habe ich ein Verzeichnis libraries und darin dann für jede Bibliothek ein eigenes Verzeichnis in dem die .jar Dateien liegen. Das Beispiel legt eine Bibliothek für die Mojarra Archive an. Mojarra ist eine Implementierung der Java Server Faces Specification.
Eine Bibliothek legt man am besten zu einem bestehenden Projekt an. Sie ist dann aber auch für andere Projekte verfügbar, man muß sie nur dem jeweiligen Projekt hinzufügen.
Geöffnetes Projekt markieren -> Project -> Properties -> Java Build Path -> Libraries
Add Library
User Library, Next
User Libraries
New
Name für die neue Bibliothek eintragen, OK
Add Jars...
Verzeichnis heraussuchen in dem die Jars liegen (hier ist es nur eine Datei).
Eclipse hat als Voreinstellung den Systembrowser (IExplorer auf Windows). So wechselt man zu Firefox. Leider betrifft das nur den externen Browser. Den internen Browser zu wechseln ist in Eclipse nicht implementiert und nur über ein Plugin zu erreichen.
Window -> Preferences -> General
New...
Browse...
Bei mir heißen alle Exceptions ex (und nicht e). So stellt man das um:
Window -> Preferences -> Code Style
Einen persönlichen Code Style kann man in einer xml-Datei speichern und dadurch in einen beliebigen Workspace importieren.
Window -> Preferences -> Java -> Code Style -> Formatter -> Export All
Window -> Preferences -> Java -> Code Style -> Formatter -> Import
Im Package Explorer die zu kopierende Datei im Projekt markieren -> Ctrl C Das Zielprojekt markieren -> Ctrl V
Window -> Preferences -> Java -> Editor -> Smart caret Positioning
Checkbox aushaken.
Eclipse weigert sich .class-Dateien in ein Projekt einzufügen. Kopieren in das bin-Projektverzeichnis etwa nützt nichts, da die Datei nicht erkannt wird. Es gibt zwei Möglichkeiten, das Problem zu lösen. Beiden Varianten ist gemein, daß man auf ein externes Verzeichnis zugreifen muß, ein bestehendes Projektverzeichnis kann man nicht wählen:
Man legt die class-Datei in ein beliebiges Nichtprojektverzeichnis. Von da aus kann man sie folgendermaßen in jedes Eclipse-Projekt aufnehmen:
Project -> Properties -> Java Build Path -> Libraries -> Add External Class Folder -> Hier sucht man das Verzeichnis, in dem die class-Datei liegt und nimmt dann diesen Ordner auf. nach dem bestätigen mit "ok" erscheint im Package Explorer dann ein neuer Eintrag mit der Bezeichnung "Referenced Libraries". Will man den Eintrag wieder entfernen (oder modifizieren) dann geht man den Menuweg wieder bis "Libraries", markiert den entsprechenden Eintrag und wählt dann "remove" oder "edit".
Man erzeugt aus der .class-Datei eine zip-Datei und ändert anschließend die Endung zu .jar . Damit hat man die Datei in ein (simples) Javaarchiv verwandelt. Diese jar-Datei legt man nun in ein beliebiges Nichtprojektverzeichnis. Von da aus kann man sie folgendermaßen in jedes Eclipse-Projekt aufnehmen:
Project -> Properties -> Java Build Path -> Libraries -> Add External Jars -> Hier sucht man das Verzeichnis, in dem das Archiv liegt und nimmt dann das Archiv auf. Im Package Explorer erscheint dann ein neuer Eintrag mit der Bezeichnung "Referenced Libraries" Will man den Eintrag wieder entfernen (oder modifizieren) dann geht man den Menuweg wieder bis "Libraries", markiert den entsprechenden Eintrag und wählt dann "remove" oder "edit".
Voreinstellung für Importanweisungen ist der eingeklappte Zustand. Das spart zwar Platz ist aber bei der Beschäftigung mit unbekannten Klassen eher ein Lernhindernis. Diese Einstellungen kann man ändern. Man kann entweder Folding generell abschalten oder nur für bestimmte Codeteile.
Window -> Preferences -> Java -> Editor -> Folding
Beim Formatiern mit Ctrl Shift F bricht Eclipse die einzeiligen Kommentare um auch wenn man die Zeilenlänge des Editors erhöht hat (siehe Zeilenlänge des Editors ändern). Abstellen kann man das wie folgt:
Window -> Preferences -> Java -> Formatter -> Edit -> Comments
Links unten auf der RegisterKarte Comments kann man die Zeilenlänge für den Kommentar einstellen.
Ctrl Shift F
Siehe auch das übernächste Kapitel über Hotkeys.
Die (private) Variable markieren -> Source Menu öffnen -> Generate getters und setters auswählen
Eclipse bietet für das Generieren von Getters und Setters kein Hotkey an, man kann sich aber selbst welche definieren, siehe hierzu Custom Hotkeys (selbstdefinierte Hotkeys).
Konsole einblenden (siehe entsprechenden Punkt). Dann erscheint rechts ein kleines rotes Quadrat. Durch Anklicken des Quadrates schließt sich die graphische Anwendung.
Projekt im Package Explorer markieren.
Rechte Maustaste liefert Kontextmenu -> New -> Class -> Enclosing Type anhaken.
Rechts daneben muß dann der Name der umschließenden Klasse eingegeben werden. Anschließend den Namen der inneren Klasse eingeben.
Der Rest sollte klar sein.
Die entstehende innere Klasse wird an den Anfang der umschließenden Klasse gesetzt, noch vor dem privaten Datenteil, was
(meiner Meinug nach) nicht der beste Ort ist. Eine Einfügung am Ende wäre besser.
Markiert man nicht das Projekt, sondern gleich die Klasse, die die inner Klasse enthalten soll, so wird der Name gleich
übernommen und man braucht nur noch "Enclosing Type" anhaken.
File -> New -> Class
Im Dialog dann den Namen der Klasse eingeben und das Interface mit dem Add-Button aussuchen, Checkbox Inherited abstract Methods anhaken (!)
-> Finish
Eclipse meldet einen Fehler indem es den Namen der Klasse rot unterringelt. Mit der Maus über dem Klassennamen hovern und warten bis das Quickfix erscheint. Das Angebot "Add unimplemented methods" annehmen.
Projekt im Package Explorer suchen und markieren, dann
Rechtsmausclick -> Export..
Man kann dann wählen, ob man ein normales oder ein startbares Archiv anlegen will.
Projekt markieren, dann
Project -> Properties -> Java Compiler -> Enable Project specific settings -> Compiler compliance level
Hier dann die gewünschte Version auswählen.
Window -> Preferences -> Java -> Compiler -> Compiler compliance level
Hier dann die gewünschte Version auswählen.
CTRL + / kommentiert die Zeile aus, in der der Cursor steht. (Einkommentieren: nochmal CTRL + /) Mehrere Zeilen: Zeilen markieren, dann gleiches Kommando
Eclipse schickt die Konsolausgaben mehrerer projekte auf dieselbe Konsole. Es kann vorkommen, daß man etwa die Konsolausgaben von zwei Projekten parallel verfolgen will. Dazu geht man wie folgt vor:
Hat mein ein Konsolfenster, so sieht man am rechten Rand eine kleine Toolbar mit einer Reihe von Symbolen. Hovert man über dem viertletzten, so bekommt man folgendes Tooltip.
Mit dem schwarzen Dreieck kann man ein kleines Dropdownmenü öffnen.
Anwählen von "New Console View" erzeugt ein weiteres Konsolfenster.
Startet man ein Projekt, so schickt Eclipse die Konsolausgaben jetzt auf beide Fenster.
Beim Start des nächsten Projekts werden zunächst wieder beide Fenster mit den neuen Ausgaben beschickt.
Das sechste Symbol von links auf der Toolbar ist aber ein Schalter, mit dem man zwischen den Ausgaben der einzelnen
Programme durchwechseln kann.
Es kann vorkommen, daß man die Konsole aus Versehen schließt. So bekommt man sie wieder:
Window -> Show View -> Console
Die Voreinstellung für die Kapazität des Konsolfenster beträgt 1000 Zeilen bei einer Zeilenlänge von 80 Zeichen, also insgeamt 80000 Zeichen. Manchmal ist das zu wenig. Am einfachsten ist es hier, die Checkbox "Limit console output" auszuhaken.
Window -> Preferences -> Run/Debug -> Console
Siehe Packages aus einem anderen Projekt importieren
Beim Anlegen einer Klasse kann man sich bereits die Konstrukturen der Elternklasse auf die Kindklasse übertragen lassen. Eclipse kann aber noch mehr.
Source Menu öffnen -> Generate Constructors from Superclass... anwählen.
Variable markieren -> Source Menu öffnen -> Generate constructors using fields anwählen.
Hinweis: Mit Hilfe des dabei erscheinenden Dialogs kann man die Felder auswählen, die in der Parameterliste des Konstruktors erscheinen sollen, wählt man kein Feld aus, wird der Defaultkonstruktor erzeugt. Unter "Insertion point" erscheint eine Liste, in der man auswählen kann, wo der im Code die Konstruktoren erzeugt werden sollen.
Eclipse speichert die Run Configurations auch dann noch, wenn man die Projekte selbst schon gelöscht hat. Das führt zu unnötig langen Listen, also weg damit.
Window -> Preferences -> General -> Startup and Shutdown -> Workspaces
Im Dialog findet man eine Tabelle mit den einzelnen Pfaden. Pfad markieren und löschen mit dem Remove-Button
Man kann auch mehrere Pfade markieren und gemeinsam löschen.
Eine ganz typische Situation: Hier fehlt mir ein Aufruf einer Methode, die es noch garnicht gibt.
Methodenaufruf codieren -> Fehlermeldung erscheint -> Mit der Maus über dem Namen hovern -> Quickfix bietet Create method an
Anschließend will Eclipse erzwingen, daß die Methode sofort codiert wird. Das kann man abstellen, besser ist es natürlich, dem Hinweis zu folgen.
Auch eine typische Situation: Also das gehört doch in eine Methode. Dafür gibt es ein sehr praktische Tastenkombination.
Codezeilen markieren -> ALT Shift M
und es erscheint sinngemäß folgender Dialog
Sobald man mehrer Methoden in einer Klasse geschrieben hat, sollte man sie thematisch ordnen. Hier hilft das Outlinefenster, das u.a. alle Methoden in einer Klasse anzeigt. Man markiert einfach die Methode und verschiebt sie. Eclipse übernimmt dann sofort die notwendigen Verschiebungen im Code.
Manchmal braucht man in einem Projekt Klassen, die in einem Package in einem anderen Projekt liegen. Sagen wir Projekt B braucht ein Package aus Projekt A. Dann:
Projekt B im Package Explorer markieren -> Project -> Properties -> Java Build Path -> Projects -> Add
Projekt markieren. Run -> Run Configurations -> Tab Arguments auswählen
Parameter im Textfeld unter "Program arguments" eintragen.
Eclipse hat eine Rechtschreibprüfung, die in der Grundeinstellung eingeschaltet ist. Dann werden unbekannte Wörter rot unterringelt. Das kann nützlich sein, aber auch störend. So schaltet man sie ab:
Window -> Preferences -> General -> Editors -> Text Editors -> Spelling -> [ ] Enable spell checking
Window -> Preferences -> General -> Appearance -> Colors and Fonts
Hier findet man umfangreiche Einstellungsmöglichkeiten für Farben und Fonts für verschiedene Teile der Eclipseoberfläche.
sysout im Code schreiben, dann CTRL - Space.
Die JVM checkt unter der Kontrolle von Eclipse die lokale Spracheinstellung des Betriebssystems und gibt dann etwa Fehlermeldungen in der jeweiligen Landessprache. Mit z. Bsp. deutschen Fehlermeldungen googeln ist in der Regel nicht erfolgreich, allemal besser sind die originalen, also amerikanische Fehlermeldungen. Die folgenden Screenshots zeigen wie man die originalen Fehlermeldungen (wieder) herstellen kann.
Window -> Preferences -> Installed JREs
Markieren der Zeile in der Tabelle aktiviert u.a. den Editbutton.
Der Editbutton führt uns zu einem weiteren Dialog. Hier können wir jetzt den Parameter -Duser.language=en an die VM übergeben.
In Java zieht die Umbennung eines Dateinamens meist eine ganze Reihe von Änderungen nach sich, da der Dateiname oft mit dem Klassennamen übereinstimmt (übereinstimen muß). Dies kann man in Eclipse recht komfortabel erledigen, da Eclipse Abhängigkeiten sucht und diese gleich mitumbenennt.
Dateiname im Package Explorer rechts markieren, rechte Maustaste liefert Kontextmenu -> Refactor -> Rename Es gibt drei Checkboxen, die man anhaken kann. Die erste ist per default angehakt und aktualisert Referenzen.
Ganz ähnlich geht man vor, wenn man eine Methode umbenennen möchte. Man markiert die Methode im rechten Outlinefenster.
Rechte maustaste liefert wieder Kontextmenu -> Refactor -> Rename
Auch hier wird man den Haken bei "Update references" nicht entfernen. Durch Ausprobieren findet man auch schnell heraus, was "Keep original method as delegate" bedeutet.
Siehe Methode umbenennen.
Wenn man ein Projekt aus dem Package Explorer entfernt kann man den Vorschlag es auch physikalisch zu löschen ablehnen. Um einen Wust von Projekten im Package Explorer zu vermeiden kann das durchaus sinnvoll sein. Leider kann man über das Menu Project -> Open Project nur Projekte öffnen, die im Package Explorer angezeigt werden. Wie man an die Anderen wieder rankommt folgt hier:
Rechtsmausklick auf der Fläche des Package Explorers -> Import -> General dann im Dialogfenster auswählen: "existing projects into workspace" -> next (button) "select root directory" -> browse (button) im dann erscheinenden Dateidialog den Eclipse Workspace raussuchen -> OK (Button) dann werden alle Projekte angezeigt und man kann auswählen welche man in den Package Explorer aufnehmen will -> Finish (Button)
Projekt markieren. Run -> Run Configurations -> Tab Arguments auswählen
Parameter im Textfeld unter "VM arguments" eintragen.
Windows -> Preferences -> General -> Startup and Shutdown -> Workspaces
Die Dropdownliste der Workspaces zeigt auch gelöschte Verzeichnisse noch an, was irreführend und lästig ist. Die Einträge werden in einer Datei mit dem Namen org.eclipse.ui.ide.prefs gespeichert. Diese Datei befindet sich im Ordner <ECLIPSE-HOME>\configuration\.settings. Man kann diese Datei auch mit einem beliebigen ASCII-Editor bearbeiten und das gelistete aber nicht mehr existierende Verzeichnis löschen.
File -> Export -> General -> Preferences
Export all ist schon angehakt!
Die Datei hat die Endung *.epf und wird im Verzeichnis <ECLIPSE-HOME> gespeichert. Von da aus kann man sie auch wieder in für einen neuen Workspace importieren.
Viele Entwickler bevorzugen einen ASCII-Editor an Stelle des XML-Editors, den Eclipse standardmäßig anbietet. So kann man das umstellen.
Window -> Preferences -> Editors -> File Associations
Eclipse arbeitet mit einer Voreingestellten Zeilenlänge von 80 Buchstaben. Das ist für heutige Bildschirmauflösungen wenig. Besonders beim Nachformatieren von Code mit Hilfe von CTRL+SHIFT+F kommt es dabei zu unerwünschten Zeilenumbrüchen. Dies Einstellung kann man folgendermaßen ändern.
Window -> Preferences -> Java -> Code Style -> Formatter -> Edit (Button)
In dem jetzt erscheinenden Dialog aktiviert man das Tab Line Wrapping und trägt die gewünschte Zeilenlänge ein.