-
Erste Schritte mit Java -> package com.ibm.as400.access does not exist??
Hallo Forum,
ich versuche mich mit den ersten Java-Testprogrämmchen auf der AS/400.
Ich habe mir das GetConnections.java-Programm aus dem Redbook iSeries: IBM Developer Kit for Java angeschaut und wollte es mal ausprobieren.
Code:
import java.sql.*;
import java.util.*;
public class GetConnections {
public static void main(java.lang.String[] args)
{
// Verify Input
if (args.length != 2) {
System.out.println("Usage (CL command line): java GetConnections PARM(<user> <password>)");
System.out.println("where <user> is a valid iSeries user ID");
System.out.println(" and <password> is the password for that user ID");
System.exit(0);
}
//Register both drivers
try {
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
} catch (ClassNotFoundException cnf) {
System.out.println("ERROR: One of the JDBC drivers did not load.");
System.exit(0);
}
try {
// Obtain a connection with each driver.
Connection conn1 = DriverManager.getConnection("jdbc:db2://localhost", args[0], args[1]);
Connection conn2 = DriverManager.getConnection("jdbc:as400://localhost", args[0], args[1]);
// Verify that they are different.
if (conn1 instanceof com.ibm.db2.jdbc.app.DB2Connection)
System.out.println("conn1 is running under the native JDBC driver.");
else
System.out.println("There is something wrong with conn1.");
if (conn2 instanceof com.ibm.as400.access.AS400JDBCConnection)
System.out.println("conn2 is running under the IBM Toolbox for Java JDBC driver.");
else
System.out.println("There is something wrong with conn2.");
conn1.close();
conn2.close();
} catch (SQLException e) {
System.out.println("ERROR: " + e.getMessage());
}
}
}
Beim wandeln komm dieser Fehler
Code:
javac GetConnections.java
GetConnections.java:35: package com.ibm.as400.access does not exist
if (conn2 instanceof com.ibm.as400.access.AS400JDBCConnection)
^
1 error
Auf einer anderen Webseite habe ich etwas mit der jt400.jar-Datei gefunden - wie kann ich diese in das Programm mit einbeziehen?
Wie gesagt, bin absoluter Java-Neuling....
-
Mit diesem Zusatz
Code:
export -s CLASSPATH=/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar
vor dem Wandeln klapp es......
-
java.lang.NoClassDefFoundError: com/ibm/as400/access/AS400
hmmm - langsam weiß ich nicht mehr, was ich machen soll.....
Ich habe eine Java-Klasse SprachServer und einen Thread namens SprachServerThread.
Diese sind in den .java-Dateien SprachServer.java und SprachServerThread.java gespeichert.
Die SprachServer.java-Datei sieht so aus:
Code:
import java.net.*;
import java.io.*;
public class SprachServer {
private ServerSocket serverSocket = null;
private int localPort;
private Socket socket = null;
private SprachServerThread[] threads = null;
static int[] threadsStatus;
static Socket[] sockets = null;
// main-Methode
public static void main(String[] args) throws IOException {
//public static void main(String args[]) throws IOException {
System.out.println("SprachServer: main() erreicht");
SprachServer ss = null;
int locPort = Integer.parseInt(args[0]);
ss = new SprachServer();
ss.run(locPort);
} // End method main()
public void run(int localPort) {
SprachServerThread sst = null;
boolean listening = true;
InetAddress localIPAddress;
String localHostName;
this.localPort = localPort;
threads = new SprachServerThread[25];
threadsStatus = new int[25];
sockets = new Socket[25];
// Tabelle mit Threads initialisieren
for (int i = 0; i < 25; i++) {
threadsStatus[i] = 0;
threads[i] = null;
sockets[i] = null;
}
try {
serverSocket = new ServerSocket(localPort);
}
catch (IOException e) {
System.err.println("Could not listen on port: " + localPort);
System.exit(-1);
}
while (listening) {
try {
socket = serverSocket.accept();
// Suchen freien Thread
for (int i = 0; i < 25; i++) {
if (threadsStatus[i] == 0) {
System.out.println("SprachServer: Versuche neuen Thread zu erstellen (Lfd. Nr.: " + i + ")");
threads[i] = new SprachServerThread(i);
System.out.println("SprachServer: Neuen Thread erstellt (Lfd. Nr.: " + i + ")");
threadsStatus[i] = 2;
sockets[i] = socket;
sst = threads[i];
sst.start();
System.out.println("SprachServer: Thread" + i + " gestartet");
break;
}
else if (threadsStatus[i] == 1) {
threadsStatus[i] = 2;
sockets[i] = socket;
sst = threads[i];
synchronized(sst) {
sst.notify();
}
break;
}
else {
}
}
}
catch (IOException e) {
System.err.println("Could not listen on port: " + localPort);
System.exit(-1);
}
} // while (listening)
try {
serverSocket.close();
}
catch (IOException e) {
System.err.println("Could not close ServerSocket");
System.exit(-1);
}
}// End run()
}
Die SprachServerThread-Datei sieht wie folgt aus:
Code:
import java.net.*;
import java.io.*;
import java.sql.*;
import com.ibm.as400.access.*;
public class SprachServerThread extends Thread {
private int idx;
private Socket socket2 = null;
BufferedReader bfrIn = null;
private AS400 as400 = null;
private String systemName = "System";
private String userid = "User";
private String password = "Password";
// Variablen für Aufruf StoredProcedures
private Connection as400Connection = null;
// Variablen für Aufruf StoredProcedure LIB/RPGPGM
CallableStatement cstmt1 = null;
java.sql.ResultSet resultSet = null;
private String messageID;
private String inputLine, outputLine;
private String outputLine39;
// Konstruktor
public SprachServerThread(int i) {
super("SprachServerThread");
as400 = new AS400(systemName, userid, password);
idx = i;
// Verbindung zur AS/400 für Aufruf StoredProcedures über JDBC-Treiber initialisieren
if (as400Connection == null) {
// noch keine Verbindung zur AS/400
try {
String driver = "com.ibm.as400.access.AS400JDBCDriver";
String connectionURL = "jdbc:as400://systemname";
Class.forName(driver).newInstance();
as400Connection = DriverManager.getConnection(connectionURL, userid, password);
}
...
Beim umwandeln und aufrufen auf der QShell
Code:
javac SprachServer.java SprachServerThread.java
system "CRTJVAPGM CLSF('/home/java/PickByVoice/SprachServer.class') OPTIMIZE(20)"
system "CRTJVAPGM CLSF('/home/java/PickByVoice/SprachServerThread.class') OPTIMIZE(20)"
java -cp . SprachServer 15010
....kommt diese Fehler-Meldung
Code:
SprachServer: main() erreicht
SprachServer: Versuche neuen Thread zu erstellen (Lfd. Nr.: 0)
java.lang.NoClassDefFoundError: com/ibm/as400/access/AS400
at java.lang.Throwable.<init>(Throwable.java:195)
at java.lang.Error.<init>(Error.java:49)
at java.lang.NoClassDefFoundError.<init>(NoClassDefFoundError.java:40)
at SprachServerThread.<init>(SprachServerThread.java:37)
at SprachServer.run(SprachServer.java:67)
at SprachServer.main(SprachServer.java:28)
Irgendwo muß wohl noch der CLASSPATH=/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar gesetzt werden, aber wo?? Ich brauche den ja nur für die SprachServerThread.java-Datei.....
-
Zitat von woki
Irgendwo muß wohl noch der CLASSPATH=/QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar gesetzt werden, aber wo?? Ich brauche den ja nur für die SprachServerThread.java-Datei.....
Java Option cp = classpath
Verschiedene Verzeichnisse/Jars werden durch Doppelpunkt getrennt.
also:
java -cp /QIBM/ProdData/HTTP/Public/jt400/lib/jt400.jar:. SprachServer 15010
Es gibt zwar komfortablere Möglichkeiten mit dem Classpath, aber die sichereste (und schnellste) Methode ist, jede Anwendung mit ihren zugehörigen jar's aufzurufen.
Alternativ könntest du auch die JDBC-Verbinung auf die nativen Treiber umstellen, die müsste er auf jeden Fall finden.
LG Rob
Similar Threads
-
By codierknecht in forum NEWSboard SAP
Antworten: 32
Letzter Beitrag: 09-02-18, 13:00
-
By anwenderi5 in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 14-01-09, 12:29
-
By Bratmaxxe in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 15-11-06, 09:51
-
By deni87991 in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 04-08-06, 10:32
-
By zerofive in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 14-09-04, 07:42
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks