Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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;

	}

}

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

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.

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

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

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

solange es funktioniert ist mir eigentlich fast alles recht...

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

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

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ß

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.

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.