Johannes7146
Goldschnabel
Hallo zusammen.
folgendes Problem.
ich habe in Java in kleineres Prgromm geschrieben (Enwicklungsumgebung: Eclipse).
Habe mir dann mit Ecplise ein Jar-Archiv exportieren lassen.
Dieses möchte ich jetz gerne ausführen (nicht entpacken, das funktioniert einwandfrei)
in dem archi befinden sich folgende dateien:
KmAbrechnung$1.class
KmAbrechnung$2.class
KmAbrechnung$3.class
KmAbrechnung.class
KmAbrechnung.java
.classpath
.project
außerdem ein ordner "META-INF" mit folgenen dateien
MANIFEST.MF
REFACTORING".XML
bei einem einfachem doppelklick erscheint folgende fehlermeldung:
failed to load Main-Class manifest attribute from (dann folgt der pfad und name des aarchives)
der quellcode meines Programmes sieht folgender maßen aus:
Das programm lässt sich ohne Probleme aus der Ecplise umgebung heraus starten und wirft keinerlei Execption.
Ich arbeite Unter windos XP Professional.
wünschenswärt wäre wenn sich das jar file nachher nicht nur unter Windows sonder auch unter anderen OS öffnen lässt (Java => Plattformunabhängigkeit) ist aber vorerst nicht unbedingt notwendig.
Vielen Dank für eure Hilfe
gruß Johannes
ich hoffe ich habe alle wichtigen infos genannt
folgendes Problem.
ich habe in Java in kleineres Prgromm geschrieben (Enwicklungsumgebung: Eclipse).
Habe mir dann mit Ecplise ein Jar-Archiv exportieren lassen.
Dieses möchte ich jetz gerne ausführen (nicht entpacken, das funktioniert einwandfrei)
in dem archi befinden sich folgende dateien:
KmAbrechnung$1.class
KmAbrechnung$2.class
KmAbrechnung$3.class
KmAbrechnung.class
KmAbrechnung.java
.classpath
.project
außerdem ein ordner "META-INF" mit folgenen dateien
MANIFEST.MF
REFACTORING".XML
bei einem einfachem doppelklick erscheint folgende fehlermeldung:
failed to load Main-Class manifest attribute from (dann folgt der pfad und name des aarchives)
der quellcode meines Programmes sieht folgender maßen aus:
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class KmAbrechnung extends JFrame {
private static final long serialVersionUID = -6909814504886095068L;
JButton button_useranlegen;
JButton button_daten_ausgeben;
JButton button_buchen;
JButton button_load;
JButton button_save;
JTextField tx_fahrer;
JTextArea tx_info;
JTextField tx_beifahrer_1;
JTextField tx_beifahrer_2;
JTextField tx_beifahrer_3;
JTextField tx_beifahrer_4;
JTextField tx_km;
JLabel lb_Fahrer;
JLabel lb_aenderung;
JLabel lb_beifahrer;
JLabel lb_info;
static Hashtable<String, Integer> ht = new Hashtable<String, Integer>();
public KmAbrechnung() {
this.getContentPane().setLayout(null);
this.initWindow();
this.addWindowListener(new WindowListener() {
public void windowClosed(WindowEvent arg0) {
}
public void windowActivated(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowDeactivated(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowOpened(WindowEvent e) {
}
});
}
protected void initWindow() {
// Instanzieren:
lb_Fahrer = new JLabel("Fahrer:");
lb_aenderung = new JLabel("gefahrene KM:");
lb_beifahrer = new JLabel("Beifahrer:");
lb_info = new JLabel("Info:");
tx_fahrer = new JTextField();
tx_info = new JTextArea();
tx_beifahrer_1 = new JTextField();
tx_beifahrer_2 = new JTextField();
tx_beifahrer_3 = new JTextField();
tx_beifahrer_4 = new JTextField();
tx_km = new JTextField();
button_useranlegen = new JButton("Benutzer anlegen");
button_daten_ausgeben = new JButton("Kontostände");
button_buchen = new JButton("Buchen");
button_useranlegen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
button_useranlegenClicked();
}
});
button_buchen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
button_buchenClicked();
}
});
// Positionen festlegen
lb_Fahrer.setBounds(5, 5, 50, 25);
tx_fahrer.setBounds(5, 35, 270, 25);
lb_aenderung.setBounds(5, 65, 100, 25);
tx_km.setBounds(5, 95, 270, 25);
lb_info.setBounds(5, 200, 100, 25);
lb_beifahrer.setBounds(350, 5, 100, 25);
tx_info.setBounds(5, 225, 620, 200);
button_buchen.setBounds(55, 165, 150, 30);
button_useranlegen.setBounds(365, 165, 150, 30);
tx_beifahrer_1.setBounds(350, 35, 270, 25);
tx_beifahrer_2.setBounds(350, 65, 270, 25);
tx_beifahrer_3.setBounds(350, 95, 270, 25);
tx_beifahrer_4.setBounds(350, 125, 270, 25);
// Elemente dem Fenster hinzufügen:
;
this.getContentPane().add(lb_Fahrer);
this.getContentPane().add(lb_beifahrer);
this.getContentPane().add(lb_info);
this.getContentPane().add(tx_fahrer);
this.getContentPane().add(tx_info);
this.getContentPane().add(tx_beifahrer_1);
this.getContentPane().add(tx_beifahrer_2);
this.getContentPane().add(tx_beifahrer_3);
this.getContentPane().add(tx_beifahrer_4);
this.getContentPane().add(lb_aenderung);
this.getContentPane().add(tx_km);
this.getContentPane().add(button_useranlegen);
this.getContentPane().add(button_buchen);
this.setSize(650, 500);
button_loadClicked();
}
public void button_useranlegenClicked() {
tx_info.setText("");
if (ht.containsKey(tx_fahrer.getText())) {
tx_info.setText("Benutzer bereits vorhanden\n");
} else {
if (!tx_fahrer.getText().equals("")) {
ht.put(tx_fahrer.getText(), 0);
tx_info.setText("Konto angelegt!\n");
} else {
tx_info.setText("Erst Namen eintragen!\n");
}
}
button_daten_ausgebenClicked();
button_saveClicked();
}
public void button_loadClicked() {
tx_info.setText("");
BufferedReader in = null;
String line = null;
try {
in = new BufferedReader(new FileReader(
"T:\\Kleeschulte\\fahrgemeinschaft\\konten.txt"));
while ((line = in.readLine()) != null) {
String s;
s = in.readLine();
try {
int i = Integer.parseInt(s);
ht.put(line, i);
} catch (NumberFormatException e) {
tx_info.append("Datei beschädigt\n");
}
}
} catch (FileNotFoundException ex) {
tx_info.append("Datei nicht gefunden:\n");
} catch (IOException ex) {
tx_info.append("IOException, Grund:\n" + ex + "\n");
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignored) {
}
}
}
if (!ht.isEmpty()) {
Enumeration en = ht.keys();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
Object val = ht.get(key);
String a = val.toString();
tx_info.append("Der Kontostand von " + key + " beträgt :" + a
+ " km\n");
}
} else {
tx_info.append("Keine Konten erstellt!\n");
}
}
public void button_saveClicked() {
if (!ht.isEmpty()) {
Enumeration en = ht.keys();
try {
FileWriter fw = new FileWriter(
"T:\\Kleeschulte\\fahrgemeinschaft\\konten.txt");
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
Object val = ht.get(key);
String a = val.toString();
fw.write(key + "\n");
fw.write(a + "\n");
}
fw.close();
} catch (IOException ex) {
tx_info.append("Fehler: " + ex + "\n");
}
tx_info.append("Daten gespeichert!\n");
} else {
tx_info
.append("Es sind keine Konten vorhanden, die gespeichert werden könnten\n");
}
}
public void button_daten_ausgebenClicked() {
if (!ht.isEmpty()) {
Enumeration en = ht.keys();
while (en.hasMoreElements()) {
String key = (String) en.nextElement();
Object val = ht.get(key);
String a = val.toString();
tx_info.append("Der Kontostand von " + key + " beträgt :" + a
+ " km\n");
}
} else {
tx_info.append("Keine Konten erstellt!\n");
}
}
public void button_buchenClicked() {
tx_info.setText("");
int beifahrer = 0;
StringBuffer ausgabe = new StringBuffer();
String s = "";
int km;
if (ht.containsKey(tx_fahrer.getText())) {
try {
s = tx_km.getText();
km = Integer.parseInt(s);
s = "";
int falscherName = 0;
// Bearbeitung der Konten der Beifahrer
// Beifahrer1
if (!tx_beifahrer_1.getText().equals("")) {
if (ht.containsKey(tx_beifahrer_1.getText())) {
int alt;
beifahrer += 1;
alt = ht.get(tx_beifahrer_1.getText());
alt = alt - km;
ht.remove(tx_beifahrer_1.getText());
ht.put(tx_beifahrer_1.getText(), alt);
} else {
tx_info
.append("Dem Namen des 1. Beifahrers konnte kein Konto zugeordnet werden \n");
ausgabe.append(s);
falscherName += 1;
}
}
// Beifahrer2
if (!tx_beifahrer_2.getText().equals("")) {
if (ht.containsKey(tx_beifahrer_2.getText())) {
int alt;
beifahrer += 1;
alt = ht.get(tx_beifahrer_2.getText());
alt = alt - km;
ht.remove(tx_beifahrer_2.getText());
ht.put(tx_beifahrer_2.getText(), alt);
} else {
tx_info
.append("Dem Namen des 2. Beifahrers konnte kein Konto zugeordnet werden \n");
ausgabe.append(s);
falscherName += 1;
}
}
// Beifahrer3
if (!tx_beifahrer_3.getText().equals("")) {
if (ht.containsKey(tx_beifahrer_3.getText())) {
int alt;
beifahrer += 1;
alt = ht.get(tx_beifahrer_3.getText());
alt = alt - km;
ht.remove(tx_beifahrer_3.getText());
ht.put(tx_beifahrer_3.getText(), alt);
} else {
tx_info
.append("Dem Namen des 3. Beifahrers konnte kein Konto zugeordnet werden \n");
ausgabe.append(s);
falscherName += 1;
}
}
// Beifahrer4
if (!tx_beifahrer_4.getText().equals("")) {
if (ht.containsKey(tx_beifahrer_4.getText())) {
int alt;
beifahrer += 1;
alt = ht.get(tx_beifahrer_4.getText());
alt = alt - km;
ht.remove(tx_beifahrer_4.getText());
ht.put(tx_beifahrer_4.getText(), alt);
} else {
tx_info
.append("Dem Namen des 4. Beifahrers konnte kein Konto zugeordnet werden \n");
ausgabe.append(s);
falscherName += 1;
}
}
// Kontostand des Fahrers bearbeiten
int alt = ht.get(tx_fahrer.getText());
alt = alt + (km * beifahrer);
ht.remove(tx_fahrer.getText());
ht.put(tx_fahrer.getText(), alt);
// Ausgabe in die Infobox
if (falscherName == 0 && beifahrer == 0) {
tx_info
.append("Bitte tragen sie mindestens einen Beifahrer ein\n");
}
if (beifahrer != 0 && falscherName != 0) {
tx_info
.append("Es wurden nur die gültigen Konten bearbeitet...\nBuchung erfolgt!\n");
}
if (beifahrer != 0 && falscherName == 0) {
tx_info.append("Buchung erfolgt!\n");
}
if (beifahrer == 0 && falscherName != 0) {
tx_info
.append("Da keinem der angegebenen Namen ein gültiges Konto zugeordnet werden konnte,\nist keine Buchung erfolgt!\n");
}
// tx_info.setText(s + s2);
} catch (NumberFormatException e) {
tx_info
.append("Das Feld \"gefahrene KM\" akzeptiert nur Zahleneingaben und darf nicht leer sein\n");
}
} else {
// hier die ausgabe wenn kein erlaubter fahrer vorhanden
tx_info.append("Bitte geben Sie einen gültigen Fahrer an\n");
}
button_daten_ausgebenClicked();
button_saveClicked();
}
}
Das programm lässt sich ohne Probleme aus der Ecplise umgebung heraus starten und wirft keinerlei Execption.
Ich arbeite Unter windos XP Professional.
wünschenswärt wäre wenn sich das jar file nachher nicht nur unter Windows sonder auch unter anderen OS öffnen lässt (Java => Plattformunabhängigkeit) ist aber vorerst nicht unbedingt notwendig.
Vielen Dank für eure Hilfe
gruß Johannes
ich hoffe ich habe alle wichtigen infos genannt