.jar-Datei lässt sich unflexibler ausführen als über die IDE

TaktSu

Mitglied
Hallo Leute,

wenn ich mein Programm über eine Ausführbare .jar-Datei erzeuge und dieses dann starte, verhält sich das Programm anders als wenn ich es beispielsweise über Eclipse starte.
Folgendes Problem: Mein Programm beinhaltet zwei Buttons, mit welchem man sich einloggen und Datenbankeinträge vornehmen kann.
Wenn ich das Programm über die .jar-Datei starte, funktioniert beispielsweise nur ein Event eines Buttons. Wenn ich danach ein anders Event ausführen möchte funktioniert es nicht.
Lasse ich aber mein Programm über Eclipse laufen, dann funktionieren beide Events unabhängig voneinander.

Hat jemand eine Idee woran das liegen kann?

Viele Grüße
 

TaktSu

Mitglied
Code:
import java.awt.Button;
import java.awt.Frame;
import java.awt.Label;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.PrintStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JTextField;

public class k
  extends Frame
{

    //Eingabe/ Ausgabe
      Label label,label1, label2, label3, label4, label5, label6, label7, label8, label9, label10;
      JTextField tf, ad, vn, nick, passwort, dbaddr;
      Button button, login;
      k.ButtonListener bL;
     k.Login l;
    
      //MySQL
      //Eingabe
      ResultSet rs = null;
        Connection con = null;
        Statement stmt = null;
        String str;
        String vna;
        String adre;
        String na;
      
        //Objekte
       DaemonThread dt;
        //Verbindung
    
      String ni = null;
        String pw =null;
        String db = null;
  
 
  public k()
  {
    setTitle("MySQL-DBEintragung");
    addWindowListener(new k.TestWindowListener());
  
    setLayout(null);
    //this.l = new k.Login();
    //this.bL = new k.ButtonListener();
    dt = new k.DaemonThread();
  
    dt.start();
 
  
    this.label = new Label("Name");
    this.label.setBounds(150, 10, 100, 15);
    add(this.label);
    this.tf = new JTextField();
    this.tf.setBounds(150, 30, 100, 20);
    this.tf.addActionListener(this.bL);
    add(this.tf);
  
    this.label = new Label("Vorname");
    this.label.setBounds(5, 10, 100, 15);
    add(this.label);
    this.vn = new JTextField();
    this.vn.setBounds(5, 30, 100, 20);
    add(this.vn);
  
    this.label1 = new Label("Adresse");
    this.label1.setBounds(320, 10, 100, 15);
    add(this.label1);
    this.ad = new JTextField();
    this.ad.setBounds(320, 30, 100, 20);
    add(this.ad);
  
    this.label2 = new Label("Nickname");
    this.label2.setBounds(550, 10, 100, 15);
    add(this.label2);
    this.nick = new JTextField();
    this.nick.setBounds(550, 30, 100, 20);
    add(this.nick);
  
    this.label5 = new Label("Passwort");
    this.label5.setBounds(680, 10, 100, 15);
    add(this.label5);
    this.passwort = new JTextField();
    this.passwort.setBounds(680, 30, 100, 20);
    add(this.passwort);
  
    this.label6 = new Label("MySQL-Adress");
    this.label6.setBounds(550, 60, 100, 15);
    add(this.label6);
    this.dbaddr = new JTextField();
    this.dbaddr.setBounds(550, 80, 100, 20);
    add(this.dbaddr);
  
    this.button = new Button("Daten Übertragen");
    this.button.setBounds(5, 60, 150, 20);
    add(this.button);
  
    this.login = new Button("Login");
    this.login.setBounds(680, 80, 100, 20);
    add(this.login);
  
    this.button.addActionListener(this.bL);
    this.login.addActionListener(this.l);
  
    setSize(800, 300);
    setVisible(true);
  }
 
 
 
 
  class DaemonThread extends Thread{
    
      DaemonThread(){
          setDaemon( true );
      }

       
        public void run(){
        
          while ( true ){
              k.this.bL = new k.ButtonListener();
               k.this.l = new k.Login();
             
          }

      }

    
  }
 
 
 
 
 
  public class Login implements ActionListener{
        
       
    
      public void tryBlock()
        {
          try
          {
            k.this.con = DriverManager.getConnection(db, ni, "");
            k.this.stmt = con.createStatement();
          
          // String sql = "INSERT INTO test (name, vorname, adresse) VALUES ('" + this.na + "', '" + this.vna + "', '" + this.adre + "')";
          //  String sql1 = "UPDATE test SET name = 'Eintragxyz' WHERE id = 26";
          //  int rows = stmt.executeUpdate(sql);
            //int rows1 = stmt.executeUpdate(sql1);
          
          //  this.rs = stmt.executeQuery("SELECT* FROM test");
            //while (rs.next()) {
              //this.str = rs.getString("name");
            //}
          }
          catch (SQLException a)
          {
            System.out.println(a);
          }
        }
    
  
    
      public void actionPerformed(ActionEvent e){
        
                 k.this.ni = k.this.nick.getText();
            k.this.pw = k.this.passwort.getText();
           k.this.db =  k.this.dbaddr.getText();
         
           k.this.l.tryBlock();
          
            if(k.this.stmt == null){
                k.this.label7 = new Label("Keine Verbindung aufgebaut");
                  k.this.label7.setBounds(550, 10, 250, 200);
                  k.this.add(k.this.label7);
                }else{
                    k.this.label8 = new Label("Verbindung aufgebaut");
                      k.this.label8.setBounds(550, 10, 250, 200);
                      k.this.add(k.this.label8);
                  
                }
        
        
      }
    
  }
 
 
 
 
 
 
 
 
 
 
  class ButtonListener implements ActionListener
  {
 
  
    ButtonListener() {}
  
    public void TryBlock()
    {
      try
      {
        k.this.con = DriverManager.getConnection(k.this.db, k.this.ni, "");
        k.this.stmt = k.this.con.createStatement();
      
        String sql = "INSERT INTO test (name, vorname, adresse) VALUES ('" + k.this.na + "', '" + k.this.vna + "', '" + k.this.adre + "')";
       String sql1 = "UPDATE test SET name = 'Eintragxyz' WHERE id = 26";
        int rows = k.this.stmt.executeUpdate(sql);
        int rows1 = k.this.stmt.executeUpdate(sql1);
      
        k.this.rs = k.this.stmt.executeQuery("SELECT* FROM test");
      }
      catch (SQLException a)
      {
        System.out.println(a);
      }
    }
  
    public void actionPerformed(ActionEvent e)
    {
    
      k.this.na = k.this.tf.getText();
      k.this.label4 = new Label(k.this.na);
      k.this.label4.setBounds(200, 10, 100, 200);
      k.this.add(k.this.label4);
    
      k.this.vna = k.this.vn.getText();
      k.this.label9 = new Label(k.this.vna);
      k.this.label9.setBounds(55, 10, 100, 200);
      k.this.add(k.this.label9);
    
      k.this.adre = k.this.ad.getText();
      k.this.label10 = new Label(k.this.adre);
      k.this.label10.setBounds(370, 10, 100, 200);
      k.this.add(k.this.label10);
    
      k.this.label3 = new Label(k.this.str);
      k.this.label3.setBounds(320, 10, 100, 200);
      k.this.add(k.this.label3);
      k.this.bL.TryBlock();
    
      if (k.this.stmt == null)
      {
        k.this.label7 = new Label("Keine Verbindung. Bitte einloggen.");
        k.this.label7.setBounds(550, 10, 250, 200);
        k.this.add(k.this.label7);
      }
      else
      {
        k.this.label8 = new Label("Daten wurden übertragen");
        k.this.label8.setBounds(550, 10, 250, 200);
        k.this.add(k.this.label8);
      }
    }
  }
 
  class TestWindowListener
    extends WindowAdapter
  {
    TestWindowListener() {}
  
    public void windowClosing(WindowEvent e)
    {
      e.getWindow().dispose();
      System.exit(0);
    }
  }
 
  public static void main(String[] args)
  {
    new k();
  }
}


Mist, ich dachte dass das eventuell ein typisches Problem sei.
Hier aber mein Quelltext. "Schön" sieht ein Quellcode wohl anders aus... Mal ganz zu schweigen von den unnötig deklaierten "labels" bei den Feldvariablen..... Also nicht gleich in die Luft gehen :D
 

mrBrown

Super-Moderator
Mitarbeiter
Und was funktioniert und was funktioniert nicht?


BTW:
Hier aber mein Quelltext. "Schön" sieht ein Quellcode wohl anders aus... Mal ganz zu schweigen von den unnötig deklaierten "labels" bei den Feldvariablen..... Also nicht gleich in die Luft gehen :D
"Schöner" Quellcode macht die Fehlersuche für dich deutlich einfacher bzw verhindert Fehler direkt.
 

TaktSu

Mitglied
Also wenn ich meinen code über eine .jar-runnable ausführe, funktioniert nur ein Button.
Wenn ich mich beispielsweise falsch eingeloggt habe, dann kann ich es nicht nochmal versuchen ohne das Programm neustarten zu müssen. Wenn ich zuerst auf "Daten übertragen" gehe, ohne mich eingeloggt zu haben, dann kann ich auch nicht versuchen mich wieder erneut einzuloggen und dann meine Daten zu übertragen.
Ich habe das Gefühl, als sei das Programm nach einem Event einfach "durchgelaufen".
--> Aber über die IDE geht das alles...

Edit: Ich habe heute irgendwo gelesen, dass jedes Betriebssystem anders mit Threads umgeht.
Könnte es vielleicht daran liegen? Ein Frame läuft ja über ein Thread soweit ich weiß.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Gibts Exceptions?


(Mein Rat: Strukturier den Code neu und versuche dich an irgendwelche Konventionen zu halten, ich würde drauf Wetten, dass der Fehler dann weg ist)
 

TaktSu

Mitglied
Könnte es vielleicht daran liegen : "In Java ist auch multithreaded Software möglich, wenn das Betriebssystem des Rechners keine Threads direkt verwendet. In diesem Fall simuliert die virtuelle Maschine die Parallelität, indem sie die Synchronisation und die verzahnte Ausführung regelt. Unterstützt das Betriebssystem Threads direkt, bildet die JVM die Thread-Verwaltung in der Regel auf das Betriebssystem ab. Dann haben wir es mit nativen Threads zu tun."

Quelle: http://openbook.rheinwerk-verlag.de...14_001.htm#mj8c6f381221d805dd6fbe480731ac0c58

Nutze selber Linux-Ubuntu

Edit: Sorry for Doppelpost
 

TaktSu

Mitglied
Ahhhhh. ich habe nun auch die .java-Datei über mein Terminal ausgeführt und nicht nur die .jar-Datei!
Und siehe da: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/test
Dabei habe ich die MySQl-Pakete importiert... zumindest in Eclipse.
Edit: Also wenn ich das alles über Eclipse laufen lasse funktioniert alles...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
F Bilder zu ausführbarer Jar-Datei hinzufügen AWT, Swing, JavaFX & SWT 5
M Daten zufällig Einlesen aus einer Datei (binäres Format) AWT, Swing, JavaFX & SWT 7
ExceptionOfExpectation Mit einer laufenden GUI Applikation eine Datei in dem Rechner löschen AWT, Swing, JavaFX & SWT 2
melaniemueller Wortliste in einer Datei ablegen AWT, Swing, JavaFX & SWT 12
princess_sara1997 .jar Datei führt den Code nicht richtig aus AWT, Swing, JavaFX & SWT 19
Yonnig Lokale HTML-Datei in Java GUI rendern AWT, Swing, JavaFX & SWT 4
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
T FXML Datei in Java Code einbinden: javafx.fxml.LoadException AWT, Swing, JavaFX & SWT 2
BabySuna Swing Komponenten auslagern auf separate Datei AWT, Swing, JavaFX & SWT 8
J Java Datei durch CMD mit Parameter ausführen AWT, Swing, JavaFX & SWT 1
B JavaFX JavaFX Anwendung deployen (entw als runnableJAR oder exe-Datei) AWT, Swing, JavaFX & SWT 15
M Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm AWT, Swing, JavaFX & SWT 7
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
H Daten aus einer XML(x83-Datei) in einem JFrame anzeigen lassen AWT, Swing, JavaFX & SWT 9
MasterCaution Swing .jar Datei ausführen AWT, Swing, JavaFX & SWT 12
K Probleme bei der Erstellung und Ausführung einer Jar Datei AWT, Swing, JavaFX & SWT 2
G Verknüpfung einer pdf Datei AWT, Swing, JavaFX & SWT 2
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
L Csv-Datei einlesen AWT, Swing, JavaFX & SWT 34
J *.jar öffnet PDF-Datei nicht AWT, Swing, JavaFX & SWT 35
M JavaFX Altes Fenster (FXML Datei) löschen AWT, Swing, JavaFX & SWT 16
F Java FX Von der Fxml Datei zum Objekt AWT, Swing, JavaFX & SWT 8
A JavaFX Anwendung in Jar Datei AWT, Swing, JavaFX & SWT 8
F FXML Datei aus dem SceneBuilder in Eclipse aufrufen AWT, Swing, JavaFX & SWT 1
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
Kanda Sorata Inhalt einer .txt Datei einlesen und in ein Label einfügen (JavaFX) AWT, Swing, JavaFX & SWT 2
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
H JavaFX aus der .fxml Datei einen Konstruktor bedienen AWT, Swing, JavaFX & SWT 3
P JavaFX - XCF Datei von Gimp kann nicht angezeigt werden AWT, Swing, JavaFX & SWT 3
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
7 JavaFX Verwendung einer ResizableCanvas-Klasse in fxml-Datei AWT, Swing, JavaFX & SWT 3
C JavaFX Auf Nodes einer FXML-Datei in start Methode zugreifen AWT, Swing, JavaFX & SWT 5
F Pfad von eingelesener Datei AWT, Swing, JavaFX & SWT 10
Crazynet xls Datei in JTable AWT, Swing, JavaFX & SWT 3
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
P Programm durch Dateiaufruf starten und Datei öffnen AWT, Swing, JavaFX & SWT 2
G .txt-Datei einlesen /formatieren in JTextfield ?? AWT, Swing, JavaFX & SWT 8
B ST Datei einlesen AWT, Swing, JavaFX & SWT 1
D JavaFX Jar Datei Signieren mit Java 8u45 AWT, Swing, JavaFX & SWT 2
M Datei mit Komponenten einbinden AWT, Swing, JavaFX & SWT 7
M Swing PDF Datei nach drucken nicht löschbar AWT, Swing, JavaFX & SWT 6
A Databinding in FXML-Datei AWT, Swing, JavaFX & SWT 1
H 2D-Grafik .EPS Datei in .PNG konvertieren AWT, Swing, JavaFX & SWT 1
G Datei öffnen Dialog modifizieren AWT, Swing, JavaFX & SWT 13
F Swing Java Swing Array in Datei und wieder raus AWT, Swing, JavaFX & SWT 7
L 2D-Grafik PNG Datei in JLabel Array Problem AWT, Swing, JavaFX & SWT 4
B JAVAFX und CSS Datei in Eclipse AWT, Swing, JavaFX & SWT 4
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
S Aus XML Datei FXML generieren AWT, Swing, JavaFX & SWT 4
V JavaFX - fxml-Datei laden (neben CSS) AWT, Swing, JavaFX & SWT 2
S Swing Verzeichnis/Datei-Pfad in JTextField schreiben AWT, Swing, JavaFX & SWT 2
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
A Datei weiterverwenden mit JFileChooser AWT, Swing, JavaFX & SWT 6
A AWT TTF-Datei zu Font-Objekt finden? AWT, Swing, JavaFX & SWT 5
Iron Monkey Nach Drag & Drop die Datei auf Komponent darstellen AWT, Swing, JavaFX & SWT 2
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
M Datei in jar öffnen AWT, Swing, JavaFX & SWT 11
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
P Neue Datei erstellen in JPanel AWT, Swing, JavaFX & SWT 5
N Speicherpfad für Datei auswählen AWT, Swing, JavaFX & SWT 2
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
N Applet JButton soll html Datei aus einem Ordner öffnen AWT, Swing, JavaFX & SWT 2
E Swing jTextPane Text datei anzeigen AWT, Swing, JavaFX & SWT 7
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
X Applet Java Applet Datei Ausführung AWT, Swing, JavaFX & SWT 9
J Bild aus Datei in BufferedImage laden AWT, Swing, JavaFX & SWT 4
M Swing XML Datei in JTable darstellen + verändern AWT, Swing, JavaFX & SWT 3
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
J Fehler beim Gif Datei öffnen AWT, Swing, JavaFX & SWT 2
N Swing TreePath Datei öffnen AWT, Swing, JavaFX & SWT 7
B Datei öffnen Dialog AWT, Swing, JavaFX & SWT 9
kodela Swing JFileChooser und die Datei-Extension AWT, Swing, JavaFX & SWT 3
T Info Datei AWT, Swing, JavaFX & SWT 3
J ImageIcon: ZipException bei ungültiger PNG-Datei AWT, Swing, JavaFX & SWT 2
W jar Datei öffnen AWT, Swing, JavaFX & SWT 4
W TrayIcon mit jdic (Problem bei .jar Datei) AWT, Swing, JavaFX & SWT 3
D Nodes eines statischen JTrees sollen auf Anker (Textmarken) in einer HTML-Datei zeigen AWT, Swing, JavaFX & SWT 8
R Swing XML Datei in JTree, Problem mit Daten einlesen AWT, Swing, JavaFX & SWT 34
M AWT Datei auf server speichern und beschreiben AWT, Swing, JavaFX & SWT 7
P JMenu-Erweiterung in externer Datei AWT, Swing, JavaFX & SWT 5
M Text in txt-Datei in letzte Zeile schreiben? AWT, Swing, JavaFX & SWT 14
X Swing Inhalt einer JEditorPane in Datei abspeichern AWT, Swing, JavaFX & SWT 5
E Datei in TextArea anzeigen AWT, Swing, JavaFX & SWT 12
data89 Nimbus Look and Feel als gepackte JAR-Datei AWT, Swing, JavaFX & SWT 3
S Auswahlfenster: Datei beim Doppelklick öffnen AWT, Swing, JavaFX & SWT 8
N Swing Hintergrund Bild in JAR Datei AWT, Swing, JavaFX & SWT 2
I Swing .Jar Datei - funktioniert - nun als Applet AWT, Swing, JavaFX & SWT 13
M Text-Datei in einem JFrame öffen? AWT, Swing, JavaFX & SWT 2
Fadi Images in JAR Datei laden? AWT, Swing, JavaFX & SWT 5
K Hyperlink als Datei identifizieren AWT, Swing, JavaFX & SWT 2
S Jar-Datei funktioniert nicht richtig AWT, Swing, JavaFX & SWT 3
1 Laden einer Datei zur Echtzeit Darstellen AWT, Swing, JavaFX & SWT 7
P Problem bei Datei zur Verwaltung von Tabs AWT, Swing, JavaFX & SWT 5
F png-Datei erstellen und einzelne Pixel schreiben AWT, Swing, JavaFX & SWT 2
A Ini Datei Auswerten - HILFE! AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben