-1

My MineSweeper project works perfectly in the IDE, but it doesn't work when I export is as "Runnable Jar File" in Eclipse and executing it afterwards. My MANIFEST.MF

I also tried to navigate via cmd there and do javac Minesweeper.jar.
Console says it cant find the command "javac".

If i cd into my folder and just do java Minesweeper.jar it says: "Cant find or load Mainclass Minesweeper.jar"

This is my code in which the main method is located:

 
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JButton;
 
 
import javax.swing.JSpinner;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.Insets;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Font;
import javax.swing.ImageIcon;
 
 
@SuppressWarnings("serial")
public class Anzeigen extends JFrame {
 
    private JPanel contentPane;
 
     int spaltenAnzahl,bombenAnzahl,reihenAnzahl;
 
     Logik logik;
 
 
    public Anzeigen() {
        logik = new Logik();
        reihenAnzahl = 2;
        spaltenAnzahl = 2;
        bombenAnzahl = 1;
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(800, 300, 700, 500);
        
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        GridBagLayout gbl_contentPane = new GridBagLayout();
        gbl_contentPane.columnWidths = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        gbl_contentPane.rowHeights = new int[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
        gbl_contentPane.columnWeights = new double[]{0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE};
        gbl_contentPane.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, Double.MIN_VALUE};
        contentPane.setLayout(gbl_contentPane);
        
        JLabel lblReihenanzahl = new JLabel("ReihenAnzahl");
        lblReihenanzahl.setFont(new Font("Tahoma", Font.BOLD, 15));
        GridBagConstraints gbc_lblReihenanzahl = new GridBagConstraints();
        gbc_lblReihenanzahl.insets = new Insets(0, 0, 5, 5);
        gbc_lblReihenanzahl.gridx = 4;
        gbc_lblReihenanzahl.gridy = 0;
        contentPane.add(lblReihenanzahl, gbc_lblReihenanzahl);
        
        JLabel lblSpaltenanzahl = new JLabel("SpaltenAnzahl");
        lblSpaltenanzahl.setFont(new Font("Tahoma", Font.BOLD, 15));
        GridBagConstraints gbc_lblSpaltenanzahl = new GridBagConstraints();
        gbc_lblSpaltenanzahl.insets = new Insets(0, 0, 5, 5);
        gbc_lblSpaltenanzahl.gridx = 7;
        gbc_lblSpaltenanzahl.gridy = 0;
        contentPane.add(lblSpaltenanzahl, gbc_lblSpaltenanzahl);
        
        JLabel lblAnzahlminen = new JLabel("AnzahlMinen");
        lblAnzahlminen.setFont(new Font("Tahoma", Font.BOLD, 15));
        GridBagConstraints gbc_lblAnzahlminen = new GridBagConstraints();
        gbc_lblAnzahlminen.insets = new Insets(0, 0, 5, 0);
        gbc_lblAnzahlminen.gridx = 9;
        gbc_lblAnzahlminen.gridy = 0;
        contentPane.add(lblAnzahlminen, gbc_lblAnzahlminen);
        
        JSpinner spinner_1 = new JSpinner();
        spinner_1.setFont(new Font("Tahoma", Font.PLAIN, 20));
        GridBagConstraints gbc_spinner_1 = new GridBagConstraints();
        gbc_spinner_1.gridheight = 4;
        gbc_spinner_1.fill = GridBagConstraints.BOTH;
        gbc_spinner_1.insets = new Insets(0, 0, 5, 5);
        gbc_spinner_1.gridx = 7;
        gbc_spinner_1.gridy = 1;
        contentPane.add(spinner_1, gbc_spinner_1);
        
        JSpinner spinner_2 = new JSpinner();
        spinner_2.setFont(new Font("Tahoma", Font.PLAIN, 20));
        GridBagConstraints gbc_spinner_2 = new GridBagConstraints();
        gbc_spinner_2.fill = GridBagConstraints.BOTH;
        gbc_spinner_2.gridheight = 4;
        gbc_spinner_2.insets = new Insets(0, 0, 5, 0);
        gbc_spinner_2.gridx = 9;
        gbc_spinner_2.gridy = 1;
        contentPane.add(spinner_2, gbc_spinner_2);
        
        
        JLabel label = new JLabel("");
        label.setIcon(new ImageIcon(Anzeigen.class.getResource("/javax/swing/plaf/metal/icons/Warn.gif")));
        GridBagConstraints gbc_label = new GridBagConstraints();
        gbc_label.fill = GridBagConstraints.BOTH;
        gbc_label.insets = new Insets(0, 0, 0, 5);
        gbc_label.gridx = 6;
        gbc_label.gridy = 9;
        label.setVisible(false);
        
        JSpinner spinner = new JSpinner();
        spinner.setFont(new Font("Tahoma", Font.PLAIN, 20));
        GridBagConstraints gbc_spinner = new GridBagConstraints();
        gbc_spinner.fill = GridBagConstraints.BOTH;
        gbc_spinner.gridheight = 4;
        gbc_spinner.insets = new Insets(0, 0, 5, 5);
        gbc_spinner.gridx = 4;
        gbc_spinner.gridy = 1;
        contentPane.add(spinner, gbc_spinner);
        
        spinner.setValue(2);
        JLabel lblNewLabel = new JLabel("");
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 15));
        GridBagConstraints gbc_lblNewLabel = new GridBagConstraints();
        gbc_lblNewLabel.fill = GridBagConstraints.BOTH;
        gbc_lblNewLabel.insets = new Insets(0, 0, 0, 5);
        gbc_lblNewLabel.gridx = 7;
        gbc_lblNewLabel.gridy = 9;
        lblNewLabel.setVisible(false);
        contentPane.add(lblNewLabel, gbc_lblNewLabel);
        spinner_1.setValue(2);
        spinner_2.setValue(1);
        JButton btnStart = new JButton("Start");
        btnStart.setFont(new Font("Tahoma", Font.PLAIN, 20));
        btnStart.addMouseListener(new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent arg0) {
                lblNewLabel.setVisible(false);
                spaltenAnzahl = (int) spinner_1.getValue();
                reihenAnzahl = (int) spinner.getValue();
                bombenAnzahl = (int) spinner_2.getValue();
                System.out.println("SpaltenAnzahl: "+spaltenAnzahl);
                System.out.println("ReihenAnzahl: "+reihenAnzahl);
                System.out.println("BombenAnzahl: "+bombenAnzahl);
                if(bombenAnzahl > spaltenAnzahl * reihenAnzahl) {
                    label.setVisible(true);
                    lblNewLabel.setVisible(true);
                    lblNewLabel.setText("Mehr Minen oder mehr Reihen/Spalten");
                }   
                else if(reihenAnzahl * spaltenAnzahl >= 2500) {
                    lblNewLabel.setText("Zu Groß!");
                    lblNewLabel.setVisible(true);
                }
                else {
                 
                logik.inizialisieren(reihenAnzahl,spaltenAnzahl,bombenAnzahl);
                setVisible(false);
                }
            }
        });
        
        JLabel lblDirektStarten = new JLabel("Direkt Starten:");
        lblDirektStarten.setFont(new Font("Tahoma", Font.BOLD, 15));
        GridBagConstraints gbc_lblDirektStarten = new GridBagConstraints();
        gbc_lblDirektStarten.insets = new Insets(0, 0, 5, 5);
        gbc_lblDirektStarten.gridx = 1;
        gbc_lblDirektStarten.gridy = 7;
        contentPane.add(lblDirektStarten, gbc_lblDirektStarten);
        GridBagConstraints gbc_btnStart = new GridBagConstraints();
        gbc_btnStart.insets = new Insets(0, 0, 5, 0);
        gbc_btnStart.gridx = 9;
        gbc_btnStart.gridy = 7;
        contentPane.add(btnStart, gbc_btnStart);
        
        JButton btnNewButton = new JButton("Einfach");
        btnNewButton.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                logik.inizialisieren(9, 9, 10);
                setVisible(false);
            }
        });
        GridBagConstraints gbc_btnNewButton = new GridBagConstraints();
        gbc_btnNewButton.fill = GridBagConstraints.VERTICAL;
        gbc_btnNewButton.insets = new Insets(0, 0, 5, 5);
        gbc_btnNewButton.gridx = 0;
        gbc_btnNewButton.gridy = 8;
        contentPane.add(btnNewButton, gbc_btnNewButton);
        
        JButton btnNewButton_1 = new JButton("Mittel");
        btnNewButton_1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                setVisible(false);
                logik.inizialisieren(16, 16, 40);
            }
        });
        GridBagConstraints gbc_btnNewButton_1 = new GridBagConstraints();
        gbc_btnNewButton_1.fill = GridBagConstraints.VERTICAL;
        gbc_btnNewButton_1.insets = new Insets(0, 0, 5, 5);
        gbc_btnNewButton_1.gridx = 1;
        gbc_btnNewButton_1.gridy = 8;
        contentPane.add(btnNewButton_1, gbc_btnNewButton_1);
        
        JButton btnNewButton_2 = new JButton("Schwer");
        btnNewButton_2.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                setVisible(false);
                logik.inizialisieren(16, 30, 99);
            }
        });
        GridBagConstraints gbc_btnNewButton_2 = new GridBagConstraints();
        gbc_btnNewButton_2.fill = GridBagConstraints.BOTH;
        gbc_btnNewButton_2.insets = new Insets(0, 0, 5, 5);
        gbc_btnNewButton_2.gridx = 2;
        gbc_btnNewButton_2.gridy = 8;
        contentPane.add(btnNewButton_2, gbc_btnNewButton_2);
        contentPane.add(label, gbc_label);
        
        
        
        
        
    }
    
public static void main(String[] args) {
        
        Anzeigen frame = new Anzeigen();
        frame.setVisible(true);
    }
 
 
}
 
  • try changing the path for your ```JDK``` , do you use windows ? – AhmedO Dec 09 '20 at 17:00
  • If your computer can't find the command javac from console, then you either didn't install a Java SDK or you didn't install it properly. Check your PATH. Rather than asking for help immediately, you should have been performing a web search -- you would already have had your answer by now. – MarsAtomic Dec 09 '20 at 17:02
  • I do use windows. I can open other projects with double clicking on the jar file. It works with cmd now but still not with double clicking – martinamama Dec 09 '20 at 21:24
  • Yea it did i figured it out like i answered down below sry . – martinamama Dec 10 '20 at 22:08

2 Answers2

0

The way to run a runnable jar is with the -jar parameter, e.g. java -jar Minesweeper.jar . Otherwise it assumes you mean a class name on the CLASSPATH environment variable, which you shouldn't rely on.

nitind
  • 19,089
  • 4
  • 34
  • 43
  • Thanks i can open my project it works perfectly. Now why cant i open it with double clicking on the jar file? – martinamama Dec 09 '20 at 21:18
  • That's something that would have to be set up outside of Eclipse, with desktop environment. It will vary. – nitind Dec 17 '20 at 16:48
0

Figured it out i had to change stuff in my registry

I can run .jar files through cmd, but I cannot double click them

sry for asking this another time when there is an answer already..