Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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;

	}

}

Geschrieben

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

Geschrieben

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.

Geschrieben

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

Geschrieben

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

Geschrieben

<?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

Geschrieben

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

Geschrieben

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ß

Geschrieben
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.

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...