Dienstag, 10. November 2015

 

eclipse einrichten (POS1: 2CHIF)

Machen Sie sich mit der Entwicklungsumgebung eclipse vertraut!
  1. Richten Sie den "Formatter" ein, sodass nur Leerzeichen für die Einrückung verwendet werden:
  2. Richten Sie sich ein File-Template mit einem Header nach unseren Programmierrichtlinien ein:
  3. Richten Sie sich ein Code-Template mit einem Header für Klassen nach unseren Programmierrichtlinien ein:

Labels: ,


Montag, 10. November 2014

 

eclipse einrichten (POS1: 2BHIF)

Machen Sie sich mit der Entwicklungsumgebung eclipse vertraut!
  1. Richten Sie den "Formatter" ein, sodass nur Leerzeichen für die Einrückung verwendet werden:
  2. Richten Sie sich ein File-Template mit einem Header nach unseren Programmierrichtlinien ein:
  3. Richten Sie sich ein Code-Template mit einem Header für Klassen nach unseren Programmierrichtlinien ein:

Labels: , ,


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
Java wartet (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: , , , ,


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 (Window"->"Preferences"->"Installed JREs, dann die entsprechende VM auswählen, Edit, dann .../jre/lib/rt.jar auswählen und Javadoc Location drücken. Dort muss man dann in geeigneter Weise den Pfad auf edvodoc setzen.

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/

Labels: ,


Donnerstag, 3. Juni 2010

 

IDEs und Projektverzeichnisse und wie Maturanten damit umgehen

Ich versuche gerade, die Programmierarbeiten der Projektwoche der Reife- und Diplomprüfung zu korrigieren. Die Maturanten haben mich da vor ziemlich großes Problem gestellt, denn ich muss von 17 Abgegebenen Projekten
Zur Erläuterung habe ich ein paar Screenshots gemacht. Das erste zeigt die Paket-Struktur eines richtig abgegebenen Netbeans-Projekt:
Das nächste Bild zeigt ein falsch abgegebenes Projekt. Es gibt in den Paket-Verzeichnissen keine *.java-Dateien!
Die *.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: , , , ,


Mittwoch, 26. Mai 2010

 

Beispielprojekt zu binären Bäumen

Die Datei java-baum_1_1.zip enthält ein Eclipse-Projekt (Importieren wie hier beschrieben) 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: , , ,


 

Beispielprojekt zu Java-Collections, Import von Projekten in Eclipse

Die Datei java-collections_1_1.zip enthält ein Eclipse-Projekt mit einem Beispiel zur Verwendung der Java-Collection-API.
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:
Man wählt dann die Datei aus:
Man erhält dann folgendes Projekt:

Labels: , ,


Montag, 15. Februar 2010

 

eclipse und cvs

Um mit CVS bequem zu arbeiten, eignet sich eclipse normalerweise ganz gut. Aber ab und zu habe ich Probleme mit dem Einchecken von Java-Projekten auf meinem Rechner zu Hause und dem Auschecken in der Schule und umgekehrt. Das Problem manifestiert sich so, dass das ausgecheckte Java-Projekt kein Java-Projekt mehr ist und man eclipse praktisch nicht mehr verwenden kann.
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.

Labels: , ,


Donnerstag, 28. Januar 2010

 

Entwicklung von Android Apps unter Linux - Hello World

Ich möchte kurz skizzieren, wie man zur ersten Android "Hello World"-Applikation kommt. Für eclipse (3.4, 3.5) gibt es ein Plugin, das man wie folgt installieren kann:
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.
Man muss das Android SDK herunterladen und auspacken. Das Installationsverzeichnis muss man noch bei den Settings angeben:
Als nächstes ruft man den "Android SDK and AVD Manager" auf:
und lädt sich die Packages für den/die Emulatoren/Handys herunter:


Dann muss man noch ein konkretes Gerät anlegen:
Dann kann man schon ein Android-Projekt anlegen:




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:
Mit "Run" kann man dann den Emulator mitsamt seiner Applikation starten:


Im Prinzip habe ich hier nur nachvollzogen, was im Hello World Tutorial auf http://developer.android.com/ beschrieben wurde.

Labels: , , , ,


 

Entwicklung von Android Apps unter Linux

Android Entwicklung ist nicht nur für Mac-User (iPhone ist mir noch nicht unter Linux gelungen). Das Android SDK gibt es für Linux, Mac und Windows! Man benötigt das SDK und ein eclipse-Plugin, das ADT - Installing and Updating ADT. Dann kann man schon los legen. Man braucht auch keine neue Sprache lernen, wenn man Java schon kann.
Leider braucht man eine aktuellere eclipse-Version, 3.4 oder 3.5. Die Version 3.2 in der Schule funktioniert nicht richtig mit dem ADT.
Auf dem edvoftp gibt es auch ein ISO-Image für eine "Android Live-CD".
Der Emulator funktioniert schon:

Labels: , , , ,


Freitag, 8. Januar 2010

 

Vergleichen von Dateien mit eclipse

eclipse bietet eine einfache Möglichkeit, aber doch nicht ganz offensichtliche Möglichkeit, Dateien miteinander zu vergleichen. Man markiert in den Projekten einfach die beiden zu vergleichenden Dateien (Strg-Klick) und wählt im Kontextmenu (rechte Maustaste) Compare With->Each Other:


Der Vergleich zeigt die Unterschiede links - rechts:

Offensichtlicher ist der Vergleich mit anderen Versionen einer Datei, denn hier gibt's im Kontextmenü Compare With->History bzw. Compare With->Local History.
Freunde der Kommandozeile verwenden natürlich
diff datei1 datei2
1,2c1,2
< /*
< * GuiApp.java
---
> /**
> * Name der Redaktion bekannt
4d3
<
7c6,13
< import org.jdesktop.application.Application;
--- snip --- es geht hier eigentlich noch weiter ---
Wobei
gvimdiff datei1 datei2
ein schöneres Ergebnis liefert:

Labels: ,


Sonntag, 20. September 2009

 

Entwicklungsumgebung für veschiedene Programmiersprachen einrichten

Richten Sie sich eine Entwicklungsumgebung ein, mit der Sie Java, C, C++, Ruby, Groovy und evtl. Python programmieren können. Weiters sollte es möglich sein, Projekte in einem CVS-Repository abzulegen.
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.
name ersetzen Sie bitte durch Ihren Familiennamen. Die Projekte sollen jeweils "Hello World"-Programme in der gegebenen Programmiersprache enthalten.

Termin: Montag 5.10.2009 um 8:40

Labels: , , , , , , , , , , ,


Mittwoch, 4. März 2009

 

CVS - "cvs commit: nothing known about ..."

Ein Schüler fragte mich, was die Fehlermeldung "cvs commit: nothing known about ..." beim commit aus Netbeans bedeutet. Ich konnte das nicht beantworten, also googeln: Diese Fehlermeldung kommt, wenn man eine Datei "commiten" will, die dem CVS noch nicht bekanntgegeben wurde (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:
  1. Alle einzelnen Dateien des Projekts händisch commiten.
  2. Das Projekt in einem neuen Verzeichnis auschecken.
  3. Prüfen, ob alles da ist.
  4. Das alte/originale Projekt löschen.
  5. Das neue verwenden.
Wenn man CVS von der Shell aus verwenden würde, müsste man sich immer selbst um jedes 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: , , ,


Montag, 26. Januar 2009

 

GUI mit Netbeans erstellen und mit Eclipse weiterbearbeiten

Ich kenne keinen brauchbaren GUI-Designer für eclipse. Der GUI-Designer von Netbeans funktioniert ganz gut, dennoch verwende ich sonst zum Arbeiten lieber eclipse. eclipse compiliert immer im Hintergrund und ist daher in der Bedienung schneller. Außerdem hat es das Scrap Book, wo man mal schnell ein paar Zeilen probieren kann ohne gleich eine ganz Klasse schreiben zu müssen. Aber das meiste ist einfach Geschmacksache.

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: , , , ,


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 (Window"->"Preferences"->"Installed JREs, dann die entsprechende VM auswählen, Edit, dann .../jre/lib/rt.jar auswählen und Javadoc Location drücken. Dort muss man dann in geeigneter Weise den Pfad auf edvodoc setzen.

Einstellung Javadoc

Labels: ,


This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]