Исполняемый файл JAR не выполняется - PullRequest
0 голосов
/ 03 июня 2018

Предисловие: я не очень разбираюсь в Java.Я хотел написать оконное приложение на основе Swing.Создание и выполнение файла класса работает, но после создания файла JAR файл не выполняется при двойном щелчке по нему.Я работаю с SE 1.8.0_131 в Windows 10 (64-разрядная версия).

Мои шаги, в которых:

Я создал этот тестовый файл

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;
    }
}

Затем я запускаю эту команду для создания файла класса:

javac SwingTest.java

Это успешно создало файл класса, и я мог выполнить его с помощью следующей команды:

java SwingTest

Я создал файл манифестас именем SwingTest.mf

Manifest-Version: 1.0
Main-Class: SwingTest

Затем я запускаю следующую команду для создания файла JAR (я написал эту команду на основе этого сообщения стекопотока )

jar cfm SwingTest.jar SwingTest.mf *.class

При этом был создан файл jar, но когда я дважды щелкаю по файлу, ничего не происходит (окно или CLI не всплывает или не мигает, в задачах не появляется процесс)

Что я пропустил или сделал неправильносоздать исполняемый файл?

Извините за массу деталей и заранее спасибо

Ответы [ 3 ]

0 голосов
/ 03 июня 2018
  1. Создайте новую папку и поместите туда SwingTest.java
  2. Затем скомпилируйте ваш класс javac SwingTest.java
  3. Создайте папку META-INF и MANIFEST.MF файл там со следующимиcontent

    Manifest-Version: 1.0
    Основной класс: SwingTest

  4. Выполнить следующую команду jar cfm SwingTest.jar META-INF/MANIFEST.MF *.class

  5. Дважды щелкните на SwingTest.jar и наслаждайтесь.

enter image description here

0 голосов
/ 03 июня 2018

Спасибо за все предложения.Я обнаружил проблему.

После прочтения этой страницы я заметил, что мой файл манифеста пропускает новую строку в конце.Поэтому мой оператор класса никогда не был добавлен в манифест, который был создан в файле jar.После добавления новой строки в конце моего Swingtest.mf и запуска следующей команды он, наконец, создал рабочий файл jar

jar cfm SwingTest.jar SwingTest.mf SwingTest.class
0 голосов
/ 03 июня 2018

Кажется, что расширение "jar" связано с каким-то другим инструментом, таким как 7-zip.Сделайте следующее: в проводнике нажмите правую кнопку мыши, в контекстном меню выберите «Открыть с помощью ...».Там выберите переход к java.exe или лучше javaw.exe.Установите флажок, чтобы всегда использовать эту связь.Тогда в следующий раз, когда вы дважды щелкнете, будет вызван Java, и ваш jar будет выполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...