Kann jar nicht starten - Fehler im Code?

Wenn ich mit eclipse JAR von der Main Classe erstelle und dann versuche es auszuführen, dann passiert nichts. Andere Programme gehen, nur das nicht, habe das gerade getestet. Kann mir jemand sagen wo der Fehler im Code ist?

Danke

import java.awt.BorderLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

import com.csvreader.CsvReader;

public class Main extends JFrame{
	
	private JPanel panel_links, panel_rechts;
	private JTextField field_suche;
	private JButton button_suche;
	private TextArea field_ergebnis;
	private String c_int, c_int_bem, c_tit, c_jahr, c_bem, o_int, o_int_bem, o_tit, o_jahr, o_bem, art, erf;
	
	public Main() {
		setSize(320, 300);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setLayout(new BorderLayout());
		
		panel_links = new JPanel();
		panel_rechts = new JPanel();
		field_suche = new JTextField();
		button_suche = new JButton("Suchen");
		field_ergebnis = new TextArea(10,30);
		
		button_suche.addActionListener(new buttonListener());
		field_suche.setColumns(20);
		field_ergebnis.setEditable(false);
		
		add(panel_links, BorderLayout.WEST);
		add(panel_rechts, BorderLayout.SOUTH);
		
		panel_links.add(field_suche);
		panel_links.add(button_suche);
		panel_rechts.add(field_ergebnis);
	}
	

	
	public static void main(String[] args) throws IOException  {
		
		new Main().setVisible(true);
		

	}
	class buttonListener implements ActionListener{

		public void actionPerformed(ActionEvent e) {
			field_ergebnis.setText("");
			try {
					
				CsvReader reader = new CsvReader("datenbank.csv",';');
				
				reader.readHeaders();
				
				while(reader.readRecord())    {
					
					c_int = reader.get("Cover-Interpret");
					
					if(field_suche.getText().equals(c_int))      {
						c_int_bem = (reader.get("CV-Interpret-Bemerkung"));
						c_tit =		(reader.get("Cover-Titel"));
						c_jahr =	(reader.get("CV-Jahr"));
						c_bem =		(reader.get("Cover-Bemerkung"));
						o_int =		(reader.get("Original-Interpret"));
						o_int_bem =	(reader.get("OV-Interpret-Bemerkung"));
						o_tit = 	(reader.get("Original-Titel"));
						o_jahr =	(reader.get("OV-Jahr"));
						o_bem =		(reader.get("Original-Bemerkung"));
						art = 		(reader.get("Art"));
						erf = 		(reader.get("Erfassung"));
						field_ergebnis.setText(field_ergebnis.getText()+"
"+c_int+"
"+c_int_bem+"
"+c_tit+"
"+c_jahr+"
"+c_bem+"
"
								+o_int+"
"+o_int_bem+"
"+o_tit+"
"+o_jahr+"
"+o_bem+"
"+art+"
"+erf+"



");
						}
				}
				reader.close();
			} catch (Exception e2) {
				// TODO: handle exception
			}
		}
	}
}```

starte es auf der Konsole dann siehste Fehlermeldungen java -jar …jar

Keine Fehlermeldung. Als ob ich dort keine Grafische Oberfläche hätte.
Ich habe die so gestartet.
D:>driver.jar
D:>loader.jar
Driver.jar lässt sich zb starten, wie jedes anderes jar File, nur loader.jar geht net, bzw vieleicht startet er ja was aber ich sehe nichts. Wenn ich in der Eclipse meine Main-Class starte, dann geht alles.

ich hab doch gesagt java -jar …jar also bei dir java -jar Driver.jar

D:>java -jar loader.jar
‘java’ is not recognized as an internal or external command,
operable program or batch file.

jetzt würd ich mir Sorgen über meine Java Installation machen :wink: (wenn java … nicht geht ist deine Installation wohl kaputt)

Bei mir ist wie immer alles kaputt -.-

Ich habe auf meinem WinXP x64bit zuerst das installier : jdk-6-windows-amd64.exe (erfolgreich), dann in der konsole java -version eingegeben , kennt nicht. Dann das installiert jdk-6-windows-i586.exe (erfolgreich) java -version eingegeben, kennt nicht, das programm kann ich auch nicht starten. Ich loge mich jetzt auf win2000 um und versuche von dort das Programm zu starten.

Bei altem guten Win2000, den ich sowieso besser mag als XP :D, scheint java in der Konsole zu funktionieren.

Ich kriege fogenden Fehler:

D:>java -jar loader.jar
Exception in thread “main” java.lang.NoClassDefFoundError: com/csvreader/CsvRead
er
at Main.(Main.java:35)
at Main.main(Main.java:51)

na und was sagt dir das da?

(Dir fehlt dein CSVReader ;))

Und das kann nicht sein, da ich das beim export eingebe, ich habe gerade 10 mal versucht, immer das gleiche. Ich habe die sogar in den workspace neben der csvreader Datei eingefügt, aber hat alles nichts gebracht.

Ich habe 2 Bilder gemacht, schau dir die bitte an.

dazu kann ich dir nichts sagen weil ich dafür Eclipse nie benutz
entpack die jar Datei einfach und pack das was da drin ist einfach in deine rein (ohne den META-INF Ordner)

Ich habe das entpackt und den com Ordner in den csv Ordner eingefügt. Der steht jetzt neben src und bin Ordner. Habe ich das richtig gemacht? Wie muss ich jetzt diesen import anpassen? import com.csvreader.CsvReader;- das geht nicht mehr. Ich habe noch kleins Bild gemacht, schau das bitte an.

nein du sollst diesen Ordner in deine JAR packen, du musst nichts an deinem Programm ändern.
Einfach nur die erstellte JAR Datei aufmachen und die Ordner reinpacken.

Boa… es geht! Lang lebe EagleEye! :stuck_out_tongue_winking_eye: Wieso macht Eclipse das nicht? Dummes Programm, klappt ja bei allen anderen Programmen, nur mit dem nicht. Aber gut dass ich jetzt diese Möglichkeit auch kenne, wieder was neues gelernt.

Danke

weil du diesmal externe Libs benutzt :wink:

Man kann auch die externen Libs mit in das Verzeichnis der eigenen Jar-Datei legen und das Class-Path-Attribut in der Manifest-Datei des eigenen Programms anpassen.

oha… fremdes jars sollten nicht entpackt und irgendwo reingepackt werden… ist immer gefaehrlich :wink:

zwei moeglichkeiten

  1. FatJar Plugin fuer eclipse holen und dem angeben welche jar davon abhaengig sind. Der entpackt das zwar intern auch, aber es ist sichergestellt, dass das auch klappt.

  2. und die wesentlich bessere methode (!!!)… einfach beim starten der jar die fremden libs ueber den parameter -classpath mitgeben.

java -classpath .:lib/any.jar -jar myjar.jar

naja debac hier ging es ja nur um schnell fertig bekommen :wink:
für JARs benutz ich meinen Manager der ist viel besser :stuck_out_tongue_winking_eye:

[QUOTE=deathbyaclown]oha… fremdes jars sollten nicht entpackt und irgendwo reingepackt werden… ist immer gefaehrlich :wink:
[/QUOTE]

OK, ich glaub, du hast mich falsch verstanden.
Ich bin kein Fan davon, fremde Jar-Dateien auszupacken und dann in mein eigenes Archiv zu packen. Das finde ich äußerst unflexibel.

Ich handhabe das so, dass ich die fremden Archive in das Verzeichnis lege, wo auch meine Programm-Jar-Datei gespeichert ist.
In meiner Jar-Datei brauche ich so nur noch das Class-Path-Attribut im Manifest anpassen, in dem ich dort die fremden Bibliotheken aufliste.

So brauch ich auch nicht beim Start des Programms irgendwas in die Konsole eintippen oder am Classpath drehen.

das mit den fremden libs mitreinpacken war nicht auf dich bezogen lectron… war allgemein gemeint

aber stimmt die angabe in der manifest datei habe ich vergessen… waere dann 3.

naja debac hier ging es ja nur um schnell fertig bekommen

schnell fertig bekommen irgendwie = fehlerhaft und kein lerneffekt :wink: