Создание исполняемого фляги - PullRequest
3 голосов
/ 13 сентября 2011

Я написал программу:

public class SystemShutdown {
    public static void main(String[] args) {
        try{
            for(int i=0;i<10;i++){
                Thread.sleep(1000);
            }
            Process p=Runtime.getRuntime().exec("shutdown -s -t 2700");
        }catch(Exception e){}
    }
}

Я скомпилировал и сохранил файл .class отдельно.

Теперь я бы написал файл манифеста как:

Manifest-Version: 1.0
Main-Class: SystemShutdown

и сохранено с именем MANIFEST.MF

Я бы поместил оба (файл .class и файл MANIFEST.MF) в один каталог.

Теперь я хочу создать файл Executable Jar. Для этого я сделал:

jar cvfm MyJar.jar *.*

После этого создается файл jar. Но когда я пытаюсь выполнить, он отображает сообщение Java Exception occured.

Кто-нибудь может мне помочь? Я хочу выполнить эту программу с двойным щелчком мыши.

Помимо вышеупомянутой царапины кто-нибудь может сказать мне точные шаги, которые необходимо выполнить для создания исполняемого фляги?

Я использую Windows7 32bit и jdk7

1 Ответ

9 голосов
/ 13 сентября 2011

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

jar cvfm MyJar.jar MANIFEST.MF SystemShutdown.class

См. Документацию jar для инструментов для получения более подробной информации.

РЕДАКТИРОВАТЬ: Я только что попробовал, и она отлично работает.Код:

// In Test.java
public class Test {
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

// Manifest in MANIFEST.MF:
Manifest-Version: 1.0
Main-Class: Test

Командная строка и вывод:

javac Test.java
jar cvfm test.jar MANIFEST.MF Test.class
java -jar test.jar
Hello

Обратите внимание, что если у вас нет конца строки в конце строки Main-Class в манифесте, это означает, чтовызовет ошибку, но лучше указать:

Failed to load Main-Class manifest attribute from test.jar
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...