PDA

View Full Version : Java auf iSeries



Seiten : [1] 2 3 4 5 6

Ottersberg
14-04-08, 12:25
Moin zusammen.

Ich bin ein Java-Entwickler. Im Moment versuchen wir ein Java-Programm auf der iSeries (V5R3) zum Laufen zu bringen. Das das geht weiß ich. Nur leider nicht wie das geht. Bei uns hat keiner Erfahrung mit Java auf der iSeries. Zum Programmieren hab ich bislang eclipse benutzt und hab jetzt ganz frisch den WDSC 7.0 installiert.

Gibt es da irgendwelche Vorschläge eurerseits, wo man Starthilfen finden kann? Irgendwelche Bücher, Artikel oder so was?

Bislang hab ich erstmal ein ganz einfaches "Hello World"-Programm geschrieben. Also nur eine Zeile mit Ausgabe. Habe dann im I-Net gefunden, dass es den Befehl RUNJVA gibt, das ganze in eine JAR-Datei umgewandelt, auf die iSeries gepackt und gestartet. War leider nichts. Wäre ja auch zu schön.

Hab dann mal weiter gelesen. Habe dann herausgefunden, dass IBM schon ein eigenes Programm für "Hello World" gleich mitgeliefert hat. Der Befehl "java Hello" hat dann auch gleich funktioniert. In dem Beitrag stand auch wie man das selber programmiert auf der iSeries. Ich hab also meinen bisherigen Quellcode rüberkopiert und wollte ihn kompilieren. Dazu QSH eingegeben, mit cd in den Ordner Java (von mir angelegt) gewechselt und "javac Hello.java" ausgeführt. Das wird ohne Fehlermeldung beendet, aber es wird keine class-Datei erstellt.

Der Classpath sieht momentan so aus:
".:/Java:/QIBM/ProdData/Java400/jdk14/bin"
Da bin ich mir nicht sicher ob der dritte Teil überhaupt sein muss.

Kann mir jemand weiterhelfen?

BenderD
14-04-08, 14:12
Hallo,

an der Qshell verhält sich die as/400 wie eine Unix Büchse. Da gibt es also java, javac usw.
Nach deinem javac sollte es also die class geben, das Zauberwort zum nachsehen heißt ls
pwd zeigt dir das aktuelle directory

Es gibt auch eine JDK Doku für die AS/400, aber für die gilt das, was auch für alle Redbooks und die meisten AS/400 Java Ressourcen gilt: grauenhafter Java Stil!!!

mfg

Dieter Bender

Ottersberg
14-04-08, 14:42
Also wir haben jetzt folgendes probiert.


QSH
cd /Java
ls (zeigt nur die Datei Hello.java)
javac Hello.java (abgeschlossen ohne Fehlermeldung mit einem $)
ls (immer noch nur eine Datei)

BenderD
14-04-08, 14:56
lass die Möhre doch mal erzählen, was sie so tut
javac -verbose Hello.java

auch java -version wäre interessant

D*B



Also wir haben jetzt folgendes probiert.


QSH
cd /Java
ls (zeigt nur die Datei Hello.java)
javac Hello.java (abgeschlossen ohne Fehlermeldung mit einem $)
ls (immer noch nur eine Datei)

BenderD
14-04-08, 15:03
ad 1: das würde ich mir nicht antun
ad 2: runjava ist ein kastrierter Aufruf, the real stuff is Qshell
ad 3: entwickeln und kompilieren am besten auf PC und dann ganz normal deployen und starten, wie auf (fast) jeder anderen Büchse auch.
ad 4: der tut nicht nötig, macht aber auch nix kaputt




Moin zusammen.

hab jetzt ganz frisch den WDSC 7.0 installiert.

dann im I-Net gefunden, dass es den Befehl RUNJVA gibt, das ganze in eine JAR-Datei umgewandelt, auf die iSeries gepackt und gestartet. War leider nichts. Wäre ja auch zu schön.

Quellcode rüberkopiert und wollte ihn kompilieren. Dazu QSH eingegeben, mit cd in den Ordner Java (von mir angelegt) gewechselt und "javac Hello.java" ausgeführt. Das wird ohne Fehlermeldung beendet, aber es wird keine class-Datei erstellt.

Der Classpath sieht momentan so aus:
".:/Java:/QIBM/ProdData/Java400/jdk14/bin"
Da bin ich mir nicht sicher ob der dritte Teil überhaupt sein muss.

Kann mir jemand weiterhelfen?

Ottersberg
14-04-08, 15:15
ad 1: das würde ich mir nicht antun
ad 2: runjava ist ein kastrierter Aufruf, the real stuff is Qshell
ad 3: entwickeln und kompilieren am besten auf PC und dann ganz normal deployen und starten, wie auf (fast) jeder anderen Büchse auch.
ad 4: der tut nicht nötig, macht aber auch nix kaputt

alles klar. Weiß ich erstmal bescheid.

Ergebnisse:

javac -verbose:
parsing started
parsing completed

immer noch keine Class-Datei.

java -version:
1.4.2

java -classpath:
nichts
finde ich etwas ungewöhnlich, da ja eigentlich eingetragen.

BenderD
14-04-08, 15:46
das ist auf jeder Büchse so, villeicht solltest du erstmal auf einer üblichen Java Büchse etwas sattelfester werden...

D*B



java -classpath:
nichts
finde ich etwas ungewöhnlich, da ja eigentlich eingetragen.

Fuerchau
14-04-08, 22:21
Erstelle dein Java-Archiv / Klassen doch ganz einfach mit deiner Eclipse-Umgebung, achte dort bei der Erstellung auf die 1.4-Version (Default ist ggf. 1.5).

Kopiere deine .jar oder deine Verzeichnisstruktur ins IFS der AS/400 und starte deine Javaprozedur wie üblich mit

qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')

Bei mir funktioniert das so.

Ottersberg
15-04-08, 08:47
das ist auf jeder Büchse so, villeicht solltest du erstmal auf einer üblichen Java Büchse etwas sattelfester werden...

D*B

Was classpath und die Standard Java-Programme angeht bin ich leider in der Tat nicht sehr bewandert. In den ganzen Kursen die ich belegt habe kam das nie zur Sprache. Nur java und javac sind mal angesprochen worden. Hab ich damals auch schon bemängelt. Aber eclipse macht das ja quasi automatisch, so dass man keinen Grund sah das mit aufzunehmen. Hauptsache das Programm läuft in eclipse :mad: . Das viele Java Probleme mit classpath zu tun haben (sieht man ja auch hier im Forum) war uninteressant. Wenn du mir einen guten Tipp geben kannst, wo das in gut aufbereiteter Form alles erklärt wird dann nehme ich den gerne. Bislang habe ich mir immer alles zusammen gesucht.

Die Programme die ich bislang geschrieben haben waren einfache grafische Oberflächen, sowie ein Programm, dass Daten aus Textdateien ausliest und in die iSeries schreibt. Aber das Programm läuft auf einer Windows-Maschine. Ich würde ja auch einen anderen Java-Programmierer im Haus fragen, nur leider gibt es keinen anderen. Ich muss das also selbst hinbekommen.

Ziel dieser Aktion ist es Daten von der iSeries auf einen MSSQL-Server zu schreiben. Das Programm würde ich gerne auf der iSeries laufen lassen, weil die iSeries es dann immer ausführen kann, wenn sich am Datenbestand einer Tabelle etwas ändert. Soweit zumindest die Theorie von mir und unserem iSeries-Experten.


Erstelle dein Java-Archiv / Klassen doch ganz einfach mit deiner Eclipse-Umgebung, achte dort bei der Erstellung auf die 1.4-Version (Default ist ggf. 1.5).

Kopiere deine .jar oder deine Verzeichnisstruktur ins IFS der AS/400 und starte deine Javaprozedur wie üblich mit

qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')

Werd ich gleich mal ausprobieren und berichten.

Ottersberg
15-04-08, 10:26
qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/MyPath" MyMainClass')

habe jetzt folgendes ausprobiert:


qsh cmd('java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" hello.jar')
Klasse nicht gefunden

Zum Ausführen eines Jar-Files brauche ich ja den Zusatz -jar.
Wir sind dann direkt in die QShell gewechselt und haben dort die Befehle direkt eingegeben.


java -jar -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" hello.jar
Programm wurde mit einem $ beendet, aber keine Ausgabe.

Habe dann lokal bei mir das mal ausprobiert und unter java -? gesehen, dass -jar hinter die anderen Argumente kommt, also:


java -classpath "/QIBM/ProdData/Java400/jdk14/bin:/Java" -jar hello.jar
Programm wurde mit einem $ beendet, aber keine Ausgabe.

Bin dann per cd in den Ordner Java gewechselt und hab folgendes ausprobiert:

java -classpath "/QIBM/ProdData/Java400/jdk14/bin" -jar hello.jar
Programm wurde ausgeführt und Ausgabe erschien.

Bin dann wieder per cd nach oben gewechselt und hab folgendes probiert:

java -classpath "/QIBM/ProdData/Java400/jdk14/bin" -jar /Java/hello.jar
Programm wurde ausgeführt und Ausgabe erschien.

Habe dann mal den classpath komplett weggelassen, also:

java -jar /Java/hello.jar
Programm wurde ausgeführt und Ausgabe erschien.

Ein

qsh cmd('java -jar /Java/test.jar')
brachte dann auch außerhalb der QShell den gewünschten Erfolg.

Der Ordner "Java" muss aber immer mit angegeben werden. Ohne den geht es nicht.