Veröffentlicht 29. Januar 200817 j 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; } }
29. Januar 200817 j 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
29. Januar 200817 j 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.
29. Januar 200817 j 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
29. Januar 200817 j 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...
29. Januar 200817 j 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
29. Januar 200817 j <?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
29. Januar 200817 j 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
31. Januar 200817 j 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ß
1. Februar 200817 j 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.
1. Februar 200817 j 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
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.