tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
385
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    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:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    
    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
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  2. #2
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!
    Sieht wohl so aus, als würde die Klasse mit der main Methode nicht gefunden. Und auch in deinem Quellcode kann ich auch keine solche Methode finden.. Also, wo hast du die versteckelt?

    *grüssle*
    MeinerEiner
     

  3. #3
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    *g*

    so etwas in der richtung habe ich mir schon gedacht!
    um ganz ehrlich zu sein!
    ich hab keiner geschrieben, da ich nciht wusste, was dort genau hinein soll:
    was mich sehr wundert, da das Prgrommm trotzdem läuft.
    das hier ist meine erste übungaufgabe, die eine Fensteranwendung und keine Konsolenanwedung ist!

    Daher dachte ich das es daran liegen könnte, dass die Main-methode überlfüssig ist!


    edit: habe gerade eine leere main-methode ergänzt:
    das ergebniss war leider das selbe......
    Geändert von Johannes7146 (05.11.07 um 11:47 Uhr)
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  4. #4
    MeinerEiner_80 Tutorials.de Gastzugang
    Es ist ne Weile her, seit ich zuletzt Eclipse genutzt habe, aber Eclipse scheint sich ja wohl an der fehlenden main Methode nicht zu stören..
    Aber das jar- Archiv benötigt eine, wenn es gestartet werden soll.
    Soweit ich dein Programm überblicke, müsste in dieser Methode nur ein KmAbrechnung Objekt erstellt werden, und dieses dann auch sichtbar (setVisible(true)) gestellt werden.

    In der Manifest Datei muss sich dann auch ein Eintrag "Main-Class" befinden, in dem eben die Klasse mit der Main Methode angegeben ist. Bei der Erstellung des Archivs über Eclipse kann man das aber mit angeben..

    *grüssle*
    MeinerEiner
     

  5. #5
    Avatar von Johannes7146
    Johannes7146 Johannes7146 ist offline Goldschnabel
    Registriert seit
    Sep 2007
    Ort
    Gütersloh
    Beiträge
    736
    also...

    ich habe folgendes ergänzt:

    Code :
    1
    2
    3
    4
    
    public static void main(String[] args) {
            KmAbrechnung a = new KmAbrechnung();
            a.setVisible(true);
        }

    leider keinen Erfolg geerntet....

    auch unter den einstellungen habe ich nichts passendes gefunden.
    Geändert von Johannes7146 (05.11.07 um 14:37 Uhr) Grund: Tippfehler
     
    Wenn mein Beitrag dir geholfen hat, würde ich mich sehr über eine positive Bewertung oder ein Danke freuen
    Gruß Johannes
    ::: Homepage :::

  6. #6
    MeinerEiner_80 Tutorials.de Gastzugang
    Schau mal hier:
    http://www.cs.laurentian.ca/badams/c...-tutorial.html

    Hier steht eigentlich ziemlich genau, was man tun muss, um ein lauffähiges jar-Archiv von einer Applikation zu bekommen..

    *grüssle*
    MeinerEiner
     

Ähnliche Themen

  1. Für ein Online-Archiv soll ein (kleines) Handbuch erstellt werden
    Von Thomas_Jung im Forum Stellenangebote (entgeltlich)
    Antworten: 1
    Letzter Beitrag: 18.11.09, 08:59
  2. Antworten: 1
    Letzter Beitrag: 02.09.08, 00:54
  3. host erstellt, aber seite läd nicht
    Von dieKitty im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 16.09.07, 03:24
  4. Antworten: 12
    Letzter Beitrag: 15.04.06, 23:00
  5. Antworten: 11
    Letzter Beitrag: 27.01.05, 15:42