Dienstag, 10. November 2015
eclipse einrichten (POS1: 2CHIF)
- Richten Sie den "Formatter" ein, sodass nur Leerzeichen für die Einrückung verwendet werden:
- Richten Sie sich ein File-Template mit einem Header nach unseren Programmierrichtlinien ein:
- Richten Sie sich ein Code-Template mit einem Header für Klassen nach unseren Programmierrichtlinien ein:
Montag, 10. November 2014
eclipse einrichten (POS1: 2BHIF)
- Richten Sie den "Formatter" ein, sodass nur Leerzeichen für die Einrückung verwendet werden:
- Richten Sie sich ein File-Template mit einem Header nach unseren Programmierrichtlinien ein:
- Richten Sie sich ein Code-Template mit einem Header für Klassen nach unseren Programmierrichtlinien ein:
Labels: Aufgabe, eclipse, POS1-2
Mittwoch, 4. Dezember 2013
Java Console mit eclipse
Java bietet seit Version 1.6 eine einfachere Methode (als java.io.BufferedReader) von der Konsole zu lesen: java.io.Console. Leider kann Console nicht innerhalb von eclipse verwendet werden, da sich diese Entwicklungsumgebung direkt mit der Ein- und Ausgabe verbindet.
Es gibt eine - etwas umständliche - Lösung dieses Problems, die hier auf stackoverflow.com beschrieben wird.
Hier eine für eclipse unter Linux adaptierte Variante. Nehmen wir an, die folgende Klasse, soll mit dem Debugger getestet werden:
import java.io.Console;
public class TestDebugging {
public static void main(String[] args) {
Console console = System.console();
if (console != null) {
String line = console.readLine(">>> ");
System.out.println(line);
} else {
System.err.println("sorry, no console available!");
}
}
}
Startet man diese Klasse in eclipse (egal ob "Run" oder "Debug"), dann wird immer "sorry, no console available!" angezeigt. Startet man die Klasse in einem Terminal, so funktioniert sie problemlos:
hp@if211l $ java TestDebugging >>> test test hp@if211l $
Das Prinzip
Man muss das Java-Programm in einem Terminal starten und sich mit eclipse "remote" verbinden. Dazu verwendet man für den Start der Klasse folgenden Aufruf:
hp@if211l $ java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y TestDebugging Listening for transport dt_socket at address: 8787
suspend=y) nun darauf, dass man sich mit dem Debugger über Port 8787 (address=8787) hin verbindet. Im eclipse ruft man dann bei geöffnetem Sourcecode der Klasse "Run>Debug Configurations" auf und legt eine neue "Remote Java Application" an.
Nachdem man (sinnvollerweise) einen Breakpoint gesetzt hat, kann man diese Debug-Konfiguration aufrufen und die Klasse debuggen. Die Ein- und Ausgabe erfolgt dann im Terminal:
Umsetzung
Um die Sache etwas komfortabler zu machen, sollte man folgendes Shell-Script erstellen:
#!/bin/bash
# launch java for external debugging
export D_PORT=8787
export D_DBG="-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,\
address=${D_PORT},server=y,suspend=y"
x-terminal-emulator -x java ${D_DBG} -cp ./bin/ $1 &
Dieses Script kann nun unter "Run>External Tools Configuration" eingerichtet werden:
Das Script startet ein Terminal-Fenster (x-terminal-emulator -x) mit dem entsprechenden Java-Aufruf (java -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y).
Debugging funktioniert wie oben beschrieben, indem man "Remote Java Application" verwendet.
Labels: eclipse, Java, POS1-2, POS1-3, POS1-4
Mittwoch, 12. September 2012
Java Dokumentation für eclipse einrichten (javadoc, java6)
Standardmäßig bekommt man bei Hilfeaufruf (shift-F2) die Dokumentation direkt von Sun in einem Browserfenster angeboten. Dazu muss das Internet freigesschaltet sein.
Man kann den Pfad für die Doku einstellen. Zum Beispiel befindet sich unter edvodoc/java/docs_6/api/ auch die Java Dokumentation. Der Server edvodoc ist auch im Testbetrieb bzw. bei gesperrtem Internet erreichbar (interner Server!). Die Dokumentation kann natürlich auch in einem lokalen Verzeichnis sein.
Die Einstellung ist im folgenden Bild zu sehen (, dann die entsprechende VM auswählen, Window"->"Preferences"->"Installed JREs
, dann Edit
.../jre/lib/rt.jar auswählen und drücken. Dort muss man dann in geeigneter Weise den Pfad auf edvodoc setzen.Javadoc Location
Das Bild zeigt die Einrichtung für Java 1.5, aber abgesehen vom Pfad (edvodoc/java/docs_6/api/) funktioniert's genau gleich.
Im Bild ist ein alter URL zu sehen. Aktuell ist http://edvodoc.htlwrn.ac.at/java/docs_6/api/
Donnerstag, 3. Juni 2010
IDEs und Projektverzeichnisse und wie Maturanten damit umgehen
- bei einem einen Java-Decompiler verwenden, damit ich überhaupt praktisch mit dem Programm arbeiten und mir Fehler genauer betrachten kann, denn dieser Kandidat hat nur die
*.class-Dateien ins Abgabe-Archiv gepackt (Eclipse-Projekt). - bei 6 (sechs) ich die
*.java-Dateien mühsam wieder in die richtige Paket-Struktur bringen, teilweise nur durch händisches Anlegen der Klassen und dann Kopieren der entsprechenden Textstellen aus der einen Textdatei, in der alle Klassen zusammengefasst waren (alles Netbeans-Projekte). - bei den restlichen 10 konnte ich das Projektverzeichnis unmittelbar verwenden (4 Eclipse-, 5 Netbeans-Projekte bzw. ganz ohne Meta-Information der IDE).
*.java-Dateien!*.java-Dateien waren im übergeordneten Verzeichnis zu finden. Die Verzeichnisse mit den Sourcen beginnen alle mit einem Leerzeichen und müssen erst wieder umbenannt werden:Das Verzeichnis, das mit "-brz" endet, enthält das Projekt, aber eben ohne die Sourcen.
Ich denke, man muss schon ziemlich Hand anlegen, um aus den Projektverzeichnissen diese kaputten Projekte zu erzeugen.
Ich frage mich, was so kompliziert ist, wenn es heißt: "Das gesamte Projekt-Verzeichnis (
Name-brz) in eine Jar-Datei (Name-brz.jar) packen und ins Abgabeverzeichnis kopieren (Name-brz.jar enthält also u.a. die „ausführbare“ Datei brz.jar)."Die Angabe für das Projekt war so:
"Verwenden Sie als Standard-Encoding UTF-8 (Unicode)!
Nennen Sie das Projekt Name-brz, wobei Name Ihr Familienname ist.
Erstellen Sie eine geeignete Paket-Struktur.
Erstellen Sie die Verzeichnisse
build und doc. Im Verzeichnis build muss das fertige Programm brz.jar abgelegt werden. In doc muss die generierte JavaDoc abgelegt werden. Legen Sie im Projektverzeichnis eine Datei readme.txt an, die Hinweise zum Erzeugen von brz.jar enthält.brz.jar soll alle nötigen Informationen zum Betrieb mit Ausnahme der Datenbankdateien enthalten, d.h. brz.jar soll in jedem beliebigen Verzeichnis aufgerufen werden können.Programmaufruf: über ein Argument der Kommandozeile soll festgelegt werden, ob das Programm als Server (Argument
server), Client (Argument client) oder AdminClient (Argument admin) läuft.Erstellen Sie ein Ant-Script, mit dem die Applikation und die Dokumentation (neu) erstellt werden kann."
Es durfte frei zwischen Eclipse und Netbeans gewählt werden.
Die Leute haben 5 oder mehr Jahre Programmieren hinter sich. Und immer wieder Tests in dieser Arbeitsumgebung (Java unter Linux). Ich verstehe das nicht!
Diese Umstände kosteten bis jetzt ein paar Stunden Arbeit (überhaupt, wenn man diesen Blog-Eintrag mitrechnet). Wirklich korrigiert habe ich noch keine der Arbeiten.
Labels: allgemeines, eclipse, Fehler, netbeans, PR5
Mittwoch, 26. Mai 2010
Beispielprojekt zu binären Bäumen
Das Paket
simple enthält einen einfachen Baum mit Einfügemethode sowie ein paar Methoden zur Bestimmung der Höhe (Tiefe) des Baumes, der Anzahl der Knoten und der Suche im Baum. Teilweise gibt es rekursive und nichtrekursive Varianten der Methoden (soweit möglich).Das Paket
wortbaum enthält ein Beispiel zur Ermittlung von Worthäufigkeiten.Das Paket
xref enthält eine Musterlösung zur Aufgabe XRef (Cross Referenz).Labels: eclipse, Java, Lösung, PR2
Beispielprojekt zu Java-Collections, Import von Projekten in Eclipse
Im Package
simple finden Sie ein Beispiel zur Ermittlung der Worthäufigkeiten wobei im main nur ein Aufruf mit fixen Testdaten (Array) vorhanden ist.Das Package
step1 zeigt die Vorarbeiten zu dem Programm hauf mit einer eigenen Datenstruktur Data, in der ein Wort und die Häufigkeit gespeichert wird. Zusätzlich implementiert Data das Interface Comparable um eine natürliche Sortierung nach dem Wort zu ermöglichen. Das Interface Comparator wird implementiert, um nach Häufigkeiten zu sortieren. Um auch nach Häufigkeiten absteigend zu sortieren, enthält die Datei Data.java noch eine Klasse DataHaufUmgekehrt, welche ebenfalls Comparator implementiert.Im folgenden der Ausschnitt mit dem
main, welches zeigt, wie man sortiert:public static void main(String[] args) {
Data[] worte = new Data[] { new Data("das", 12), new Data("Haus", 3),
new Data("Text", 23), new Data("Punkt", 2), new Data("Testdaten", 12) };
System.out.println("unsortiert");
for (Data d : worte) {
System.out.println(" " + d);
}
Arrays.sort(worte);
System.out.println("sortiert nach Wort");
for (Data d : worte) {
System.out.println(" " + d);
}
Arrays.sort(worte, new Data());
System.out.println("sortiert nach Anzahl");
for (Data d : worte) {
System.out.println(" " + d);
}
Arrays.sort(worte, new DataHaufUmgekehrt());
System.out.println("sortiert nach Anzahl absteigend");
for (Data d : worte) {
System.out.println(" " + d);
}
}Im Paket
step2 wird dann das Beispiel ausgebaut, sodass in der Klasse Hauf zwei Varianten von Maps zum Speichern der Worthäufigkeiten verwendet werden. Eine HashMap und eine TreeMap. Für die HashMap muss die Klasse Data zusätzlich noch die Methoden equals() und hashCode() implementieren (überschreiben).Im
main von Hauf werden dann Worte aus der Standardeingabe gelesen und in den zwei Maps gespeichert.Die Datei java-collections_1_1.zip kann nach dem Download direkt in Eclipse importiert werden:
Montag, 15. Februar 2010
eclipse und cvs
Ich habe herausgefunden, was falsch ist, aber ich weiß noch nicht, warum das passiert. Es gibt in einem Java-Projekt zwei Konfigurationsdateien
.project und .classpath. In beiden Dateien treten beim Auschecken (oder schon beim Einchecken) Fehler auf. Ich möchte die Unterschiede anhand eines Beispiels zeigen:.project nach dem Auschecken:<projectdescription> <name>start-demo</name> <comment></comment> <projects> </projects> <buildspec> </buildspec> <natures> </natures> </projectdescription>
.project wie es funktioniert:<projectdescription>
<name>start-demo</name>
<comment></comment>
<projects>
</projects>
<buildspec>
<buildcommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildcommand>
</buildspec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectdescription>Irgendwie wurde die buildSpec und die nature unterschlegen.Die zweite Datei
.classpath fehlt komplett:<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>Man kann die Dateien nach obigem Muster anlegen und muss dann ein "Refresh" des Projekts machen.
Donnerstag, 28. Januar 2010
Entwicklung von Android Apps unter Linux - Hello World
Bei "work with" muss man https://dl-ssl.google.com/android/eclipse/ eingeben:
Mit Auswählen von "Developer Tools" und "Finish" installiert man das Plugin.
und lädt sich die Packages für den/die Emulatoren/Handys herunter:


Für "Hello World" muss man noch ein Textfeld (
TextView tv) anlegen:package at.haberstroh.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("Hello, Android");
setContentView(tv);
}
}
Zum Starten muss man noch eine eigene "Run Configuration" anlegen:
Labels: android, eclipse, Java, Linux, PR5
Entwicklung von Android Apps unter Linux
Labels: android, eclipse, Java, Linux, PR5
Freitag, 8. Januar 2010
Vergleichen von Dateien mit eclipse
Compare With->Each Other:
Offensichtlicher ist der Vergleich mit anderen Versionen einer Datei, denn hier gibt's im Kontextmenü Compare With->History bzw. Compare With->Local History.diff datei1 datei2Wobei
1,2c1,2
< /*
< * GuiApp.java
---
> /**
> * Name der Redaktion bekannt
4d3
<
7c6,13
< import org.jdesktop.application.Application;
--- snip --- es geht hier eigentlich noch weiter ---
gvimdiff datei1 datei2ein schöneres Ergebnis liefert:

Sonntag, 20. September 2009
Entwicklungsumgebung für veschiedene Programmiersprachen einrichten
Der Schwerpunkt - auch im Hinblick auf die Reife- und Diplomprüfung - liegt auf Java, aber im Laufe des Jahres werden die anderen Sprachen verwenden.
Für Ihre Projekte (Programmbeispiele) sollten Sie sowieso eine Versionsverwaltung einsetzen. In der Schule haben wir einen CVS-Server eingerichtet. Auf diesem System müssen Sie außerdem Ihre Beispiele abgeben.
Ich empfehle eclipse oder netbeans als Entwicklungsumgebung (wobei ich mir nicht sicher bin, ob netbeans auch ein Groovy-Plugin hat).
Falls Sie noch keinen Zugang zum CVS-Server haben, melden Sie sich bei mir.
"Abgabe": erstellen Sie folgende Projekte und checken Sie diese auf dem CVS-Server ein.
- 5ad-name-java-helloworld
- 5ad-name-c-helloworld
- 5ad-name-cpp-helloworld
- 5ad-name-ruby-helloworld
- 5ad-name-groovy-helloworld
- 5ad-name-python-helloworld
Termin: Montag 5.10.2009 um 8:40
Labels: Aufgabe, C, C++, CVS, eclipse, groovy, Java, netbeans, PR5, Programmiersprachen, Python, ruby
Mittwoch, 4. März 2009
CVS - "cvs commit: nothing known about ..."
cvs add file). Der Schüler hatte die Datei schon gelöscht. Also ist auch kein cvs add nötig. Aber aus einem mir (noch) unbekannten Grund versucht Netbeans doch ein "commit" auf diese (nicht existierende) Datei zu machen.Folgenden Workaround habe ich gefunden:
- Alle einzelnen Dateien des Projekts händisch commiten.
- Das Projekt in einem neuen Verzeichnis auschecken.
- Prüfen, ob alles da ist.
- Das alte/originale Projekt löschen.
- Das neue verwenden.
cvs add kümmern. Da würde man verstehen, warum man eine nicht existierende Datei nicht "commiten" kann. Hier war aber die Datei offensichtlich nicht vorhanden und trotzdem versuchte Netbeans ein "commit".Grundsätzlich vereinfacht aber Netbeans (und auch eclipse) die Verwendung von CVS - schon alleine die umständlichen Schritte beim Anlegen (import) entfallen.
cvs add braucht man nicht machen.Scheinbar ein Bug im Netbeans.
Links:
Labels: CVS, eclipse, Fehler, netbeans
Montag, 26. Januar 2009
GUI mit Netbeans erstellen und mit Eclipse weiterbearbeiten
Netbeans verwendet eine eigene Klassen-Library für die graphischen Oberflächen. Die muss man auch im eclipse-Projekt verwenden. Es sind das die Libraries
appframework-1.0.3.jar und swing-worker-1.1.jar, zu finden im Verzeichnis java2/modules/ext/ unterhalb des Netbeans-Installationsverzeichnisses (bei mir /usr/local/netbeans-6.1/).Also zunächst ein "Java Desktop Application"-Projekt anlegen, das GUI erstellen und den About-Dialog ändern.

Als nächstes legt man ein einfaches Java-Projekt in eclipse an und kopiert die Pakete (Klassendateien) in das entprechende Projektverzeichnis, z.B.
hh@turing:~/netbeans/Gui2Eclipse/src> ls gui2eclipse/ Gui2EclipseAboutBox.form Gui2EclipseAboutBox.java Gui2EclipseApp.java Gui2EclipseView.form Gui2EclipseView.java resources hh@turing:~/netbeans/Gui2Eclipse/src> cp -r gui2eclipse/ ~/workspace/Gui2Eclipse/src/ hh@turing:~/netbeans/Gui2Eclipse/src> cd ~/workspace/Gui2Eclipse/In eclipse muss man natürlich ein "refresh" machen. Dann erscheinen die Pakete mit den Klassen im Package Explorer, allerdings mit Fehlern, da ja die Libraries fehlen. Um dieses Problem zu beheben, legen wir im Quell-Ordner des Projekts (
src/) ein lib/-Verzeichnis an, in die wir die nötigen Libraries kopieren:hh@turing:~/workspace/Gui2Eclipse/src> mkdir lib hh@turing:~/workspace/Gui2Eclipse/src> cd lib hh@turing:~/workspace/Gui2Eclipse/src/lib> cp /usr/local/netbeans-6.1/java2/modules/ext/appframework-1.0.3.jar . hh@turing:~/workspace/Gui2Eclipse/src/lib> cp /usr/local/netbeans-6.1/java2/modules/ext/swing-worker-1.1.jar .
Wo sich diese Jar-Dateien befinden ermittelt man aus dem "Properties"-Dialog von Netbeans:

Im eclipse muss man wieder ein "refresh" machen und anschließend die Libraries "aktivieren": Build Path->Add External Achives

Dass die Jar-Files eingebunden sind, sieht man im Projekt-Explorer:

Die Applikation lässt sich dann starten und ändern.
Aber Achtung: der von Netbeans erzeugte Code ist nicht so einfach. Man muss sich vorher schon ziemlich genau überlegen, wie man sein System gestaltet und dann erst das GUI dazu machen.
Labels: eclipse, Java, netbeans, PR3, PR5
Donnerstag, 18. Dezember 2008
Java Dokumentation für eclipse einrichten
Standardmäßig bekommt man bei Hilfeaufruf (shift-F2) die Dokumentation direkt von Sun in einem Browserfenster angeboten. Dazu muss das Internet freigesschaltet sein.
Man kann den Pfad für die Doku einstellen. Zum Beispiel befindet sich unter edvodoc/java/docs_15/api/ auch die Java Dokumentation. Der Server edvodoc ist auch im Testbetrieb bzw. bei gesperrtem Internet erreichbar (interner Server!). Die Dokumentation kann natürlich auch in einem lokalen Verzeichnis sein.
Die Einstellung ist im folgenden Bild zu sehen (, dann die entsprechende VM auswählen, Window"->"Preferences"->"Installed JREs
, dann Edit
.../jre/lib/rt.jar auswählen und drücken. Dort muss man dann in geeigneter Weise den Pfad auf edvodoc setzen.Javadoc Location
Abonnieren Posts [Atom]












