Java – die besten Beiträge

Java "Hauptklasse konnte nicht gefunden oder geladen werden"?

Ich habe gestern angefangen java zu lernen, ich nutze die IntelliJ IDE von jetbrains.

Wenn ich in meinem Projekt mehr als eine Klasse habe bekomme ich beim ausführen folgenden fehler:

Fehler: Hauptklasse Test.jar konnte nicht gefunden oder geladen werden
Ursache: java.lang.ClassNotFoundException: Test.jar

Ich erstelle die .jar datei folgendermaßen:

Bei IntelliJ habe ich unter Projectstructur/artifacts einen neuen eintrag erstellt, als Main Class meine main Klasse angegeben und dann über Build/Build Artifacts/Build die jar datei erstellt. In dem Ordner mit dieser Datei befindet sich ausschließlich die Test.jar Datei (Was, nebenbei bemerkt nicht der Name meiner Klasse ist, sollte das irgentwelche auswirkungen haben ist es allerdings nicht der Grund für mein Problem da ich bereits ein zweites projekt erstellt habe, in welchem die Klasse und die jar Datei gleich hießen und es dennoch nicht funktioniert hat (Selbe Fehlermeldung)), welche ich dann mit 'java Test.jar' ausführe. Nun bekomme ich den oben gennanten error. Meine Hauptklasse sieht wie folgt aus:

import cons.colors;

public class greyscale_converter {

public static void main(String[] args){

    System.out.println(args[0]);
}

}

Ich habe dann in dem Projekt noch das package 'cons' erstellt, in welchem sich die Klasse 'colors' befindet. Diese sieht wie folgt aus:

package cons;

public class colors {
}

Ich möchte nun also die jar datei erstellen können und von der main methode in der 'greyscale_converter' Klasse auf die klasse colors zugreifen können, bevor ich allerdings soweit kam erhielt ich schon die Fehlermeldung nach welcher die Hauptklasse nicht gefunden werden könne. Nach einer halben stunde googlen bin ich noch auf keine Lösung gestoßen die bei mir funktioniert hat. Danke schonmal.

Computer, programmieren, Java, Fehlermeldung, IntelliJ IDEA

Java Swing: Wie kann ich Klicks auf Buttons zählen?

Hallo zusammen,

folgendes Programm habe ich. Nun möchte ich dieses noch optimieren. Es soll nun neben dem Button angezeigt werden, wie oft der Button geklickt wurde. Kann mir hier jemand helfen?

Vielen Dank!

import javax.swing.*;
import java.awt.*;
// Event brauchen wir für das Ereignis, wenn ein Button geklickt wird
import java.awt.event.*;

public class FirstGUI extends JFrame {
  private JButton button1;
  private JButton button2;
  private JButton button3;
  private JPanel panelButton;
  private JLabel oben;
  private JLabel anzeige;

  public FirstGUI() {
    super("Fenster");
    setLocation(300, 300);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    // Das BorderLayout ist mal das erste - später fügen wir noch ein GridLayout im Westen hinzu
    getContentPane().setLayout(new BorderLayout(5, 5));
    
    // Buttons erzeugen
    button1 = new JButton("Button 1");
    button2 = new JButton("Button 2");
    button3 = new JButton("Button 3");

    // Panels erzeugen auf einem GridLayout
    panelButton = new JPanel(new GridLayout(3, 1));

    // Auf Panel Buttons packen
    panelButton.add(button1);
    panelButton.add(button2);
    panelButton.add(button3);

    // Listener für Buttons
    addButtonListener(button1);
    addButtonListener(button2);
    addButtonListener(button3);

    // Labels erzeugen
    oben = new JLabel("Layout Test");

    // Label zentrieren
    oben.setHorizontalAlignment(JLabel.CENTER);
    anzeige = new JLabel("Button klicken");

    // Labels auf Frame packen (direkt auf das BorderLayout)
    getContentPane().add(BorderLayout.NORTH, oben);
    getContentPane().add(anzeige);

    // Panels auf Frame packen (das panelButton hat ein GridLayout, dass jetzt in den WestBereich des BorderLayouts kommt)
    getContentPane().add(BorderLayout.WEST, panelButton);
    pack();
    setVisible(true);
  }

  public static void main(String[] args) {
    FirstGUI g = new FirstGUI();
  }

  private void addButtonListener(JButton b) {
    b.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent ae) {
        eingabe(ae.getActionCommand());
      }
    });
  }

  private void eingabe(String a) {
    anzeige.setText(a);
  }
}

programmieren, Java

Meistgelesene Beiträge zum Thema Java