Java Getriebe

Java und NetBeans

Wie debugge ich einen Processor in NetBeans

Es ist schon nicht einfach einen eigenen Processor für Annotations zu schreiben, wenn man etwas Fehlerbehandlung einbauen möchte. Aber noch „schwieriger“ ist es diesen Processor im Debugger betrachten zu können. Das Problem ist, dass sich die IDE im Grunde genommen selber debuggen muss. Zur IDE hat man in den seltensten Fällen ein Projekt, zu dem man einfach Strg+F5 drücken könnte. Allerdings gelingt man mit einem einfach Trick sehr schnell an das gewünschte Ziel. Read More

The following options were not recognized by any processor

Dokumentationen sind toll. Vorausgesetzt sie erzählen dir von sich aus, was du wissen willst oder musst. Beim Thema „Annotation Processing“ habe ich noch keine wirklich gute Dokumentation gefunden. Viele Dinge muss man sich aus unterschiedlichen Stellen zusammen suchen oder mühsam aus den JavaDocs erraten. Das ganze auch noch in deutsch zu bekommen, kann man glaube ich sowieso vergessen. Umso schöner ist es, wenn man dann doch noch Mal etwas neues entdeckt. Read More

@ServiceProvider in einem JavaSE Projekt

Ich bin im Moment auf einem Annotation-Trip. Die Dinger sind cool. Vor allem in Zusammenhang mit ihren Processor Implementierungen. NetBeans macht es in seinen neusten Versionen selbst vor. So cool die XML Layer Strukturen zur Laufzeit auch sind, so uncool sind sie in dem Quellen zu pflegen. Dank des LayerGeneratingProcessors ist es aber verdammt einfach geworden Annotations (die ja bekanntlich direkt im Quelltext bei den betroffenen Klassen stehen) selber zu schreiben, die die notwendigen Einträge in der layer.xml erstellen.

Ein ähnliches leidiges Thema wie die XML Layer sind Services, die man selber in einer Textdatei unter META-INF/services pflegen darf. Auch hier bietet NetBeans von eine Annotation samt Processor bereit um diese Einträge direkt im Quelltext zu schreiben: @ServiceProvider.

In einer NetBeans RCP Anwendung ohne weiteres nutzbar und sogar zu bevorzugendes Mittel. Allerdings wäre so etwas in einer eigenen Standard Java Anwendung auch cool ((Um damit zum Beispiel eigene Processor Implementierungen zu registrieren.)). Ich hatte so etwas zwar auch schon mal selber geschrieben ((leider finde ich gerade die Quellen dazu nicht)) aber ganz so gut wie die NetBeans Implementierung war das dann doch nicht. Allerdings ist es relativ einfach möglich die Annotation von NetBeans in den eigenen Java SE Projekten zu nutzen: Read More

Programmatically Restart a Java Application | Javalobby

Ein netter Artikel + Anleitung von Leo Lewis, wie man eine Java Anwendung neu startet:
Programmatically Restart a Java Application | Javalobby.

Das Problem hat man (wie auch im Artikel beschrieben) „öfters“, wenn man mit lokalisierten Benutzeroberflächen arbeitet und die Möglichkeit einbauen möchte die Sprache vom Benutzer ändern zu lassen.

Momentan habe ich das Problem, dass ich einen „Updater“ schreiben möchte. Auch hier benötige ich einen „restart“ der Anwendung.

Externe Prozesse lassen sich unter Windows nicht starten

Manchmal sucht man nach einem Fehler ohne ihn wirklich verstehen zu können. Man verbraucht wertvolle Arbeitszeit darauf die seltsamen Umstände zu reproduzieren in denen der Fehler das erste Mal auftrat um dann noch mehr Arbeitszeit darauf zu verwenden den Fehler zu beseitigen. Vergeblich.

Hier möchte ich einmal über ein solches Beispiel schreiben, das mich die letzten Wochen beschäftigt hat. Read More

In welcher Jar ist diese Klasse?

Die meisten Java Entwickler werden sich diese Frage eigentlich nur stellen um herauszufinden, welche Jar noch im Classpath fehlt. Ein einfaches Suchprogramm welches auch in gepackten Dateien suchen kann reicht hierfür schon aus. Aber das soll hier nicht das Problem sein. Denn wenn sich ein Entwickler diese Fragen stellt um zur Laufzeit des Programms die richtige Jar zu finden wird die Sache schon schwieriger.

Als aller erstes sollte er sich fragen: Brauche ich das wirklich? Read More

8.3 Namen in Ant unter Windows ermitteln

Ich brauchte in einem Ant Skript unbedingt einen Pfad, der keine Leerzeichen enthält. Leider konnte ich nicht vorher definieren, welcher Pfad das zur Laufzeit des Skriptes sein wird. Da hatte ich keinen Einfluss drauf. Da ich aber wusste, das das Skript auf jeden Fall auf einem Windows Rechner laufen wird, bestand die einzige Möglichkeit darin die von Windows immer noch unterstützen alten DOS 8.3 Namen zu verwenden. Das Problem ist, „Ant“ selber kennt dafür keinen Befehl oder Attribute bei einem Task (oder ich habe ihn nicht gefunden!) Read More

Storage – Datenverwaltung in einer GUI

This entry is part 1 of 1 in the series Storage

Es gibt ziemlich viele verschiedene Möglichkeiten Daten innerhalb der eigenen Benutzeroberfläche bereit zu stellen und an die verschiedenen Stationen und Element der GUI zu verteilen. DIE Lösung wird es denke ich niemals geben. Reicht für den einen ein Singleton für alles, will der Andere um jeden Preis so ein Singleton vermeiden. Wird die Anwendung größer und komplexer reicht selten ein einzelnes Datenobjekt aus um an alle seine Daten heran zu kommen. Zu viele Datenobjekte lassen sich aber auch nur schwer handhaben.

Dieser Artikel soll der Beginn einer kleinen Serie über meine Art der Datenverwaltung, die ich jetzt seit einiger Zeit in meinen Swing-GUIs verwende. Die Serie soll beschreiben, wie die grundlegende Funktion ist und wie die Kommunikation mit den GUI Elementen dieser Datenverwaltung von Statten geht. Read More

Das passende JFrame zu einem ActionEvent ermitteln

Arbeitet man in seiner Swing Anwendung mit Actions für das Menü und die Toolbar (evtl. sogar für die Buttons), dann wird man meistens auch dafür sorgen, dass in den unterschiedlichen Bereichen (Menü/Toolbar) die gleichen Actioninstanzen verwendet werden. Schließlich ist dies eines der Hauptvorteile von Actions. Der Hauptnachteil an Actions ist aber, dass man nicht mehr weiß, welches Element denn jetzt die Action ausgelöst hat. Es gibt aber mitunter einige Anwendungsbeispiele, in denen der „Aufrufkontext“ durchaus von Interesse ist. Read More