aus Java Programme Jar.datei erstellen (eclipse)

  • Themenstarter Themenstarter knut
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
K

knut

Gast
Ich habe mit Eclipse (Version: 3.3.0) ein Java Prgramm geschrieben, welches auf eine Oracle Datenbank (glaube 10g) zugreift, mit einem SELECT Statement daten holt und diese dann weiter verarbeitet werden. Das klappt soweit auch ganz gut.

Ich möchte aber jetzt aus dem Programm eine Jar Datei erstellen, nur hier bekomme ich ein Problem. Das Programm hört bei folgende Zeilen einfach auf zu arbeiten (bzw. springt aus der Objekt und wartet auf meine nächste Aktion) es zeigt mir noch das Fenster mit -2a- an aber nicht mehr -3-.

Code:
               JOptionPane.showMessageDialog(sqlkonv,"hallo","step -2a-",1);
	  		OracleDataSource ods = new OracleDataSource();
	  		JOptionPane.showMessageDialog(sqlkonv,sqlkonv.geturl(),"step -3-",1);
	  		ods.setURL(sqlkonv.geturl());
	  		JOptionPane.showMessageDialog(sqlkonv,"hallo","step -4-",1);

wenn ich die Datei mit Eclipse exportiere kommt auch eine Fehlermeldung ("JAR creation failed. See details for additional information."), trotzdem läuft das Programm (bis auf dem oben erwähnten Fehler).

in den Details der Fehlermeldung steht folgendes:

JAR creation failed. See details for additional information.
Exported with compile warnings: /PKONV0002/src/Query.java
Exported with compile warnings: /PKONV0002/src/Wcodes.java
Exported with compile warnings: /PKONV0002/src/DatCreater.java
Exported with compile warnings: /PKONV0002/src/Vorschau.java
Exported with compile warnings: /PKONV0002/src/sqlkonv.java
Exported with compile warnings: /PKONV0002/src/dbHandler.java
Exported with compile warnings: /PKONV0002/src/Methoden.java
Resource is out of sync with the file system: '/PKONV0002/Satzaufbau.properties'.


Ich habe zwei Properties die ich mit der Jar gespeichert haben (also im gleichen Verzeichniss) diese kann er auch laden.
 
weiß nicht ob ich die externen bibliotheken mitkompiliert habe, wie geht das?

Auf die Properties kann ich zugreifen da habe ich eigentlich kein problem...
 
Eclipse lässt dich aber nicht exportieren solange die Sache nicht geklärt ist.
Niemals Dateien im Workspace ändern ohne das Eclipse das mitbekommt.
 
gut ich habe die properties erstmal entfernt, jetzt kammen nur warnings (s.o.) ohne fehler... aber funktioniert genauso wie vorher...
 
nein, habe mich etwas doof ausgedrückt... ich komme immer noch nicht über das zweite fenster hinnaus (also kein zugriff auf die db)..
 
Was ist ein StackTrace?

habe in meinen workspace unter ".metadaten/.log" folgendes gefunden:

!SESSION 2008-01-28 09:29:36.794 -----------------------------------------------
eclipse.buildId=I20070625-1500
java.version=1.5.0_08
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=de_DE
Command-line arguments: -os win32 -ws win32 -arch x86

This is a continuation of log file H:\Java\workspace\.metadata\.bak_0.log
Created Time: 2008-01-28 15:06:54.558

!ENTRY org.eclipse.wst.sse.ui 2 2 2008-01-28 15:06:54.574
!MESSAGE StructuredTextEditor being used without StructuredDocument

!ENTRY org.eclipse.wst.sse.ui 2 2 2008-01-28 15:06:54.574
!MESSAGE Input Name: build-jar.txt

!ENTRY org.eclipse.wst.sse.ui 2 2 2008-01-28 15:06:54.574
!MESSAGE Unexpected IDocumentProvider implementation: org.eclipse.ui.editors.text.TextFileDocumentProvider

!ENTRY org.eclipse.wst.sse.ui 2 2 2008-01-28 15:06:54.574
!MESSAGE Unexpected IDocument implementation: org.eclipse.core.internal.filebuffers.SynchronizableDocument

!ENTRY org.eclipse.jdt.launching 4 150 2008-01-28 15:13:33.805
!MESSAGE The archive: //srvdcchildgds1.zentral-de.jug.de/homes/kph/Programme/Eclipse/eclipse/homes/kph/Programme/Eclipse/eclipse/plugins/org.eclipse.swt.win32.win32.x86_3.3.0.v3346.jar which is referenced by the classpath, does not exist.


in nem anderen Forum stand das das was damit zu tuen hat...
 
ich bin mir relativ sicher das es daran liegt das ich eine externe bibliothek nicht mitkompeliert habe, aber ich finde einfach nicht raus wie ich die mitkompelieren kann...

hier mal der komplette quelltext der betroffenden klasse:



Code:
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;
	}
}
 
liegen deine oracle sachen in einer extra jar datei die du mit in dein Project in Eclipse eingebunden hast?

Wenn ja dann kannst du mithilfe des FatJar Plugins für Eclipse diese jar mit in deine Packen und dann geht es Wunderbar
Dazu findest du hier im Forum viele Threads
 
ich habe paar jar dateien rumliegen, also könnte ich die dann alle mit fatjar in meien jar datei packen und dann funktioniert?

probier ich mal aus, danke
 
mh, fatjar runtergeladen, eclipse gestartet auf fatjar geklickt, nichts passiert...
 
was bedeutet nicht passiert?

Rechtsklick auf dein JavaProjekt und dann hast du im Kontextmenü einen Eintrag mit Fatjar

oder etwas nicht?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben