Do przedmowa: Nie jestem bardzo doświadczony z Java. Chciałem napisać aplikację okno na podstawie huśtawki. Tworzenie i wykonanie pliku klasy działa, ale po utworzeniu pliku JAR plik nie wykonuje, gdy klikniesz dwukrotnie. Pracuję z SE 1.8.0_131 w systemie Windows 10 (64 bit).

Moje kroki, w których następuje:

Stworzyłem ten plik testowy

import java.awt.event.*; 
import javax.swing.*;

public class SwingTest {

    public static void main(String[] args){

        JFrame mainWindow = getMainWindow();

        mainWindow.setVisible(true);
    }

    public static JFrame getMainWindow(){
        JFrame frame = new JFrame("Hauptfenster");

        // Initialize Window
        frame.setLayout(null);
        frame.setSize(300, 300);

        // Close application on window close
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        // Create and add Close-button
        JButton exitButton = new JButton("Close");
        exitButton.addActionListener(ae -> System.exit (0));
        exitButton.setLocation(20, 20);
        exitButton.setSize(100, 40);
        frame.add(exitButton);

        return frame;
    }
}

Następnie uruchomiłem to polecenie, aby utworzyć plik klasy:

javac SwingTest.java

Pomyślnie utworzył plik klasy i mogłem wykonać go z następującym poleceniem:

java SwingTest

Stworzyłem manifestowy plik o nazwie swingtest.mf

Manifest-Version: 1.0
Main-Class: SwingTest

Następnie uruchomiłem następujące polecenie, aby utworzyć plik JAR (napisałem to polecenie na podstawie Ta stackoverflow post)

jar cfm SwingTest.jar SwingTest.mf *.class

Stworzyło to plik słoik, ale po dwukrotnym kliknięciu pliku nic się nie dzieje (nie ma okna lub plików CLI lub migotszy, żaden proces nie pojawia się w zadaniach)

Co przegapiłem lub nie zrobiłem źle, aby stworzyć plik wykonywalny?

Przepraszam za masę szczegółów i dzięki z góry

0
Benjamin 3 czerwiec 2018, 22:46

3 odpowiedzi

Najlepsza odpowiedź

Dziękujemy za wszystkie sugestie. Znalazłem problem.

Po przeczytaniu przez Ta strona zauważyłem, że mój manifestowy plik Misses nowa linia na końcu. Dlatego moje oświadczenie klasy nigdy nie zostało dodane do manifestu, który został utworzony w pliku JAR. Po dodaniu nowej linii na końcu mojego wahaniaTest.mf i uruchomił następujące polecenie, w końcu wyprodukował do pliku jar pracy

jar cfm SwingTest.jar SwingTest.mf SwingTest.class
1
Benjamin 3 czerwiec 2018, 20:35

Wydaje się, że rozszerzenie "jar" jest związane z innym narzędziem, takim jak 7-zip. Wykonaj następujące czynności: W Eksploratorze Naciśnij prawy przycisk myszy, w menu kontekstowym wybierz "Otwórz z ...". Selekcja nawigacji do java.exe lub lepsza javaw.exe. Zaznacz pole wyboru, aby zawsze korzystać z tego stowarzyszenia. Następnie następnym razem, gdy dwukrotnie klikniesz, Java zostanie wywołany, a twój słoik zostanie wykonany.

0
mentallurg 3 czerwiec 2018, 20:03
  1. Utwórz nowy folder i umieść tam SwingTest.java
  2. Następnie skompiluj swoją klasę javac SwingTest.java
  3. Utwórz folder META-INF i MANIFEST.MF Plik z następującymi treściami

    Manifest-wersja: 1.0
    Główna klasa: SwingTest

  4. Uruchom następujące polecenie jar cfm SwingTest.jar META-INF/MANIFEST.MF *.class

  5. Kliknij dwukrotnie SwingTest.jar i ciesz się.

enter image description here

0
Mikita Berazouski 3 czerwiec 2018, 20:04