kochphilip Geschrieben 29. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 29. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kochphilip Geschrieben 29. Januar 2008 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 29. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kochphilip Geschrieben 29. Januar 2008 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
flashpixx Geschrieben 29. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kochphilip Geschrieben 29. Januar 2008 Autor Teilen Geschrieben 29. Januar 2008 solange es funktioniert ist mir eigentlich fast alles recht... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kochphilip Geschrieben 29. Januar 2008 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kingofbrain Geschrieben 29. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ksg9-sebastian Geschrieben 31. Januar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
pyo Geschrieben 1. Februar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ksg9-sebastian Geschrieben 1. Februar 2008 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.