kochphilip Geschrieben 29. Januar 2008 Geschrieben 29. Januar 2008 wenn ich das programm in eclipse (Version: 3.3.0) starte funktioniert das ohne probleme. Wenn ich jedoch die (von eclipse erstellte jar datei starte) wird das Fenster -2- angezeigt, jedoch das fenster -3- nicht. Das Programm bleibt stehen und wartet auf meine nächste Aktion. Wie bekomme ich eine voll funktionsfähige Jar Datei? package sqlkonv; import java.io.FileInputStream; import java.io.IOException; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; [COLOR="DarkRed"]import oracle.jdbc.pool.OracleDataSource;[/COLOR] import java.sql.*; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.Properties; import java.lang.Integer; import javax.swing.JOptionPane; import oracle.jdbc.*; import oracle.jdbc.pool.*; import oracle.sql.*; // Klasse für die Verarbeitung der Eingabe public class dbHandler { private String url = ""; private sqlkonv sqlkonv = null; private Query query = null; private Wcodes wcodes = null; private String strwcodes = ""; private String kndnrart = ""; public dbHandler(sqlkonv sqlkonv, Wcodes wcodes) { this.query = new Query(sqlkonv, this); this.sqlkonv = sqlkonv; this.wcodes = wcodes; } public void setUrl(String ueb_url) { url = ueb_url; } public String getkndnrart() { return kndnrart; } public int erstelletxt() { Properties satzaufbau = null; try { satzaufbau = new Properties(); satzaufbau.load(new FileInputStream("./satzaufbau.properties")); } catch(Exception Ex) { JOptionPane.showMessageDialog(sqlkonv,Ex.getLocalizedMessage(),"dbhandler -1-",1); System.out.println(Ex.getLocalizedMessage()); } try { DatCreater datei = new DatCreater(); Iterator itwcodes = wcodes.getWCodes(); Iterator itavar = wcodes.getAVar(); itwcodes.next(); itavar.next(); System.out.println("Hallo"); JOptionPane.showMessageDialog(sqlkonv,"hallo","step -2-",1); [color=darkred]OracleDataSource ods = new OracleDataSource();[/color] JOptionPane.showMessageDialog(sqlkonv,"hallo","step -3-",1); ods.setURL(sqlkonv.geturl()); int anztitel = query.getanztitel(); while (itwcodes.hasNext()) { int count = 0; Connection con = ods.getConnection(); strwcodes = (String) itwcodes.next(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query.erstelle_Query()); System.out.println("Result Set bekommen..."); String avar = (String) itavar.next(); while(rs.next()) { // Sammeln der Daten für die Textdatei: count++; kndnrart = (String)(rs.getString("kndnrart")); // System.out.println("Kundennr: "+kndnrart); String zeile = ""; String[] titel = new String[2]; for (int i = 1; i < 100; ++i) { String puf = satzaufbau.getProperty(i+""); String sb_values[] = puf.split("~"); // System.out.println(i+": "+sb_values[0]+" - "+sb_values[1]+" - "+sb_values[2]+" - "+sb_values[3]); if (sb_values[1].equals("ENDE")) { break; } if (sb_values[0].equals("eingabe")) { if(sb_values[1].equals("ausgabegruppe")) { zeile += this.sqlkonv.getagrp(); } if(sb_values[2].equals("ausgabevariante")) { zeile += avar; } continue; } if (sb_values[1].equals("titel1") || sb_values[1].equals("titel2")) { for(int akttitel = 1; akttitel <= anztitel;akttitel++) { if (rs.getString(sb_values[1]+"_"+akttitel) != null) { zeile += rs.getString(sb_values[1]+"_"+akttitel); }else { int max = Integer.parseInt(sb_values[2]); for(int y = 1; y <= max; y++) { zeile += " "; } } } }else { if (rs.getString(sb_values[1]) != null) { String add_zeile = ""; add_zeile = rs.getString(sb_values[1]); if (sb_values[3].equals("n")) { add_zeile = Methoden.nullen(add_zeile,Integer.parseInt(sb_values[2])); } zeile += add_zeile; }else { int max = Integer.parseInt(sb_values[2]); for(int y = 1; y <= max; y++) { zeile += " "; } } } zeile += " [~] "; } datei.schreibeZeile(zeile); } System.out.println("Anzahl: "+count); } datei.beendeSchreiben(); return 0; }catch(SQLException e) { JOptionPane.showMessageDialog(sqlkonv,"SQLException ("+e.getErrorCode() + "): " + e.getLocalizedMessage(),"dbhandler -2-",1); System.out.println("SQLException ("+e.getErrorCode() + "): " + e.getLocalizedMessage()); e.printStackTrace(System.out); } catch(IOException e) { e.printStackTrace(System.out); JOptionPane.showMessageDialog(sqlkonv,"IOException: "+e.getMessage(),"dbhandler -3-",1); System.out.println("IOException: "+e.getMessage()); } return 1; } public String getaktWcode() { return strwcodes; } } Zitieren
kingofbrain Geschrieben 29. Januar 2008 Geschrieben 29. Januar 2008 Servus, nachdem genau zwischen diesen beiden Messages die Instanzierung einer Oracle-Klasse liegt: wie startest Du das jar? Befinden sich in Deinem Classpath alle benötigten Bibliotheken (in diesem Fall der Oracle JDBC Treiber)? Falls Du einen Doppelklick auf das Jar machst, wird wahrscheinlich Dein CP nicht korrekt gesetzt werden. Probiers mal über die Kommandozeile mit der Angabe -classpath Peter Zitieren
kochphilip Geschrieben 29. Januar 2008 Autor Geschrieben 29. Januar 2008 ich habe eclipse die jar datei erstellen lassen, daher glaub ich das die bibliotheken nicht mit drin sind... wenn ich das programm über die kommandozeile starte "java sqlkonv.jar" bekomme ich folgende fehlermeldung: Exception in thread "main" java.lang.NoClassDefFoundError: sqlkonv/jar das gleiche auch wenn ich das mit -classpath mache. Zitieren
kingofbrain Geschrieben 29. Januar 2008 Geschrieben 29. Januar 2008 Servus, Du solltest Dich mal mit den Grundlagen von Java und hier speziell mit den Kommandozeilenwerkzeugen zum kompilieren und starten auseinander setzen. Du willst Deine Klasse starten, sagst der VM aber nicht, wo es diese finden kann. Und auch die benötigten Klassen, die außerhalb der Standard API sind, werden nicht bekannt gemacht. Du willst so etwas: java -classpath mein.jar;oracle-treiber.jar;sonstiges.jar meine.tolle.Klasse Peter Zitieren
kochphilip Geschrieben 29. Januar 2008 Autor Geschrieben 29. Januar 2008 ich bin aus einer anderen sprache (und natürlich entwicklungsumgebung) den luxus gewöhnt zu sagen so das programm ist fertig, und gut ist... aber danke ich probiere es mal aus... Zitieren
flashpixx Geschrieben 29. Januar 2008 Geschrieben 29. Januar 2008 Hallo, Du kannst entweder die JDBC Daten mit in Deine Jar packen (sollte man aber nicht machen), dann wird es laufen, oder Du musst wirklich mal Deine Config durchschauen, ob der ClassPath richtig gesetzt ist. Ich würde aber auch im Code explizit abfangen ob die Klasse da ist Phil Zitieren
kochphilip Geschrieben 29. Januar 2008 Autor Geschrieben 29. Januar 2008 solange es funktioniert ist mir eigentlich fast alles recht... Zitieren
kochphilip Geschrieben 29. Januar 2008 Autor Geschrieben 29. Januar 2008 <?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="lib" path="H:/Java/java/grossdv/lib/activation.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/entirex.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/log4j-1.2.14.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/mail.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/mysql-connector-java-5.0.7-bin.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/ojdbc14.jar"/> <classpathentry kind="lib" path="H:/Java/java/grossdv/lib/sqljdbc.jar"/> <classpathentry kind="output" path="bin"/> </classpath> das stand in der Datei .classpath Zitieren
kingofbrain Geschrieben 29. Januar 2008 Geschrieben 29. Januar 2008 Servus, diese Datei ist aber egal, wenn Du von der Konsole aus startest. Die VM kennt diese Datei nicht, da sie Eclipse-spezifisch ist. Bitte schau Dir die Grundlagenkapitel in einem Javabuch Deiner Wahl an und verstehe, wie die Anwendungen zum kompilieren und ausführen funktionieren. Davor macht es keinen Sinn, hier weiterzumachen. Peter Zitieren
ksg9-sebastian Geschrieben 31. Januar 2008 Geschrieben 31. Januar 2008 Exportier deine Anwendung aus Eclipse als JAR-Datei. Pack die exportierte Datei und sämtliche andere benötigten Bibliotheken in den selben Ordner. Dann starten über CMD mit java -classpath alle.jar.dateien.jar -jar meine.Klasse Und dann, bitte, schau dir mal Javagrundlagen, Objektorientierte Programmierung, Sun Coding Conventions... an Gruß Zitieren
pyo Geschrieben 1. Februar 2008 Geschrieben 1. Februar 2008 java -classpath alle.jar.dateien.jar -jar meine.Klasse Das Problem dabei ist nur, dass -classpath und -jar nicht zusammen funktionieren. Wenn du libs von nem .jar aus benutzen möchtest dann solltest du die Classpatheinträge in der MANIFEST.MF machen. Hatte vor kurzem ein ähnliches Problem. Zitieren
ksg9-sebastian Geschrieben 1. Februar 2008 Geschrieben 1. Februar 2008 Ups, hab Fehler. Sorum natürlich: Mit ner JAR-Datei: In der Manifest beim CLASSPATH-Eintrag die benötigten Jars anhängen Bei ner "entpackten" Anwendung: java -classpath jar1.jar;jar2.jar;jar3.jar meine.Klasse Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.