Java сделать файл JAR

1

Учитывая следующий класс:

public class Menu {
    public static void main(String[] args) {
        System.out.println("hi");
    }
}

Я хочу запустить jar файл, но после его создания я нажимаю на menu.jar но он не запускается. Почему это?

  • 0
    Что еще ты достиг? Это ОЧЕНЬ простая программа.
  • 4
    Как ты создал Jar? Вы создали исполняемый файл?
Показать ещё 5 комментариев
Теги:
jar

4 ответа

3

Если вы дважды щелкните файл jar javaw, используется для запуска файла jar. Основное различие между java и javaw заключается в том, что более поздняя javaw не прикреплена к консоли, поэтому вы никогда не увидите вывод своего оператора System.out.println.

Вы можете попробовать эти две вещи:

1. Создайте рамку вместо

import javax.swing.*; 

public class Menu {
    public static void main(String[] args) {
        SwingUtilities.invokeLater( new Runnable(){
            public void run(){
                JFrame frame = new JFrame( "Hi!" ); 
                frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); 
                frame.setVisible( true ); 
            }
        } ); 
    }
}

2. Запустите банку с консоли (без двойного щелчка)

$> java -jar your-file.jar
hi
  • 0
    Кроме того, если я неправильно понял вопрос OP, я не вижу никаких требований, чтобы он был приложением с графическим интерфейсом; кажется, они просто хотят что-то, что может печатать на консоли, по крайней мере.
  • 0
    @BoristheSpider вы правы. извини, я был неаккуратным.
Показать ещё 2 комментария
2

Следуйте инструкциям, описанным на странице: http://docs.oracle.com/javase/tutorial/deployment/jar/appman.html.

Прежде всего вам нужно иметь файл Manifest.FM в папке META-INF, и в указанном файле вам нужно установить Main-Class: classname

1

Создание бань

Когда вы создаете файл .jar, вы должны убедиться, что файл .jar знает, какая программа будет запущена. Это делается с помощью записи Main-Class в файле MANIFEST.MF папке META-INF внутри файла .jar. Более новые версии опции поддержки инструмента jar -e для выполнения задания.

Следующий Makefile показывает, как выполнять различные команды:

.PHONY: all
all: run

.PHONY: run
run: Hello.jar
        java -jar Hello.jar

Hello.jar: Hello.class
        jar cvfe Hello.jar Hello Hello.class

Hello.class: Hello.java
        javac Hello.java

Обратите внимание, что Makefile не является типичным способом создания и запуска программ Java. Я использовал только Makefile здесь, потому что для удобства он показывал голые металлические команды, которые выполнялись для разных вещей. Обычно можно использовать Apache Maven mvn, Apache Ant ant или gradle для автоматизации процесса построения приложений Java.

Запуск банок

Когда вы запускаете файл .jar, в зависимости от того, где вы его запускаете (например, Windows Explorer), на самом деле он не может иметь никакого терминала. System.out является stdout процесса JVM, и если он не подключен к терминалу, сообщение не будет отображаться на экране, оно не будет отображаться (NIL: в Windows, /dev/null в UNIX).

Существует два варианта:

  • Запустите файл jar с терминала, то есть запустите cmd.exe или xterm или что-то в этом роде, и запустите файл jar там, используя cd *dirOfJarFile* затем java -jar *menu.jar*.
  • Вместо этого используйте графический интерфейс.

На данный момент я рекомендую первый вариант.

Пример кода GUI

import javax.swing.*;

public class HelloSwing {
    public static void main(final String... args) {
        final JFrame frame = new JFrame("Hello");
        frame.getContentPane.add(new JLabel("Hello, world!"));
        frame.pack();
        frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }
}
0

Откройте CMD.exe в Windows или на Mac и введите следующий код:

java -jar path-to-your-jar-file.jar

Например:

java -jar C:\MyAwesomeJarFile.jar

Он должен печатать Hi в консоли.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню