Как запустить файл JAR - PullRequest
184 голосов
/ 06 августа 2009

Я создал файл JAR следующим образом:

jar cf Predit.jar *.*

Я запустил этот JAR-файл, дважды щелкнув по нему (он не работал). Поэтому я запустил его из командной строки DOS так:

java -jar Predit.jar

Возникли исключения "Не удалось загрузить основной класс". Итак, я извлек этот файл JAR:

jar -xf Predit.jar

и я запустил файл класса:

java Predit

Это сработало хорошо. Я не знаю, почему файл JAR не работал. Подскажите пожалуйста шаги для запуска файла JAR

Ответы [ 11 ]

193 голосов
/ 06 августа 2009

Вам необходимо указать Main-Class в манифесте jar-файла.

В руководстве Oracle приведена полная демонстрация, но вот еще одна с нуля. Вам нужны два файла:

Test.java:

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

manifest.mf:

Manifest-version: 1.0
Main-Class: Test

Обратите внимание, что текстовый файл должен заканчиваться новой строкой или переводом каретки. Последняя строка не будет проанализирована должным образом, если она не заканчивается новая строка или возврат каретки.

Затем запустите:

javac Test.java
jar cfm test.jar manifest.mf Test.class
java -jar test.jar

Выход:

Hello world
52 голосов
/ 16 февраля 2011
java -classpath Predit.jar your.package.name.MainClass
19 голосов
/ 04 декабря 2016

Перед запуском проверка jar Main-Class: classname доступна или отсутствует в файле MANIFEST.MF . MANIFEST.MF присутствует в банке.

java -jar filename.jar
15 голосов
/ 06 августа 2009

Вы должны добавить манифест в jar, который сообщает среде выполнения java, что такое главный класс Создайте файл Manifest.mf со следующим содержимым:

Manifest-Version: 1.0
Main-Class: your.programs.MainClass

Измените your.programs.MainClass на ваш фактический основной класс. Теперь поместите файл в Jar-файл, в подпапку с именем «META-INF». Для этого вы можете использовать любую ZIP-утилиту.

11 голосов
/ 31 августа 2017

Очень простой подход к созданию .class, .jar файла.

Выполнение файла JAR. Не нужно слишком беспокоиться о файле манифеста. Сделай это простым и элегантным.

Пример Java программы Hello World

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Компиляция файла класса

javac HelloWorld.java

Создание файла фляги

jar cvfe HelloWorld.jar HelloWorld HelloWorld.class

или

jar cvfe HelloWorld.jar HelloWorld *.class

Запуск файла фляги

 java -jar HelloWorld.jar

Или

java -cp HelloWorld.jar HelloWorld
10 голосов
/ 07 августа 2009

Если вы не хотите создавать манифест только для запуска файла jar, вы можете ссылаться на основной класс непосредственно из командной строки при запуске файла jar.

java -jar Predit.jar -classpath your.package.name.Test

Устанавливает, какой основной класс запускать в файле jar.

4 голосов
/ 25 февраля 2015

Java

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

manifest.mf

Manifest-version: 1.0
Main-Class: Hello

В командной строке:

$ jar cfm HelloMss.jar  manifest.mf Hello.class 
$ java -jar HelloMss.jar

Выход:

Hello Shahid
3 голосов
/ 06 октября 2015

Файл JAR Eclipse Runnable

Создание проекта Java - RunnableJAR

  • Если используются jar-файлы , добавьте их в путь сборки проекта.
  • Выберите класс, имеющий main () при создании файла Runnable Jar. enter image description here

Основной класс

public class RunnableMainClass {
    public static void main(String[] args) throws InterruptedException {
        System.out.println("Name : "+args[0]);
        System.out.println(" ID  : "+args[1]);
    }
}

Запустите файл Jar с помощью Java-программы ( cmd ), указав аргументы, и получите вывод и отображение в консоли Eclipse. public class RunJar { static StringBuilder sb = new StringBuilder(); public static void main(String[] args) throws IOException { String jarfile = "D:\\JarLocation\\myRunnable.jar"; String name = "Yash"; String id = "777"; try { // jarname arguments has to be saperated by spaces Process process = Runtime.getRuntime().exec("cmd.exe start /C java -jar "+jarfile+" "+name+" "+id); //.exec("cmd.exe /C start dir java -jar "+jarfile+" "+name+" "+id+" dir"); BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream ())); String line = null; while ((line = br.readLine()) != null){ sb.append(line).append("\n"); } System.out.println("Console OUTPUT : \n"+sb.toString()); process.destroy(); }catch (Exception e){ System.err.println(e.getMessage()); } } } В Eclipse найти Сокращения :

Справка ► Содержание справки ► Руководство пользователя по разработке Java ► Ссылки ► Меню и действия

3 голосов
/ 06 августа 2009

Если вы не хотите иметь дело с этими деталями, вы также можете использовать помощников по экспорту jar из Eclipse или NetBeans.

2 голосов
/ 12 января 2016

У меня есть такая структура папок:

D: \ JavaProjects \ OlivePressApp \ ком \ Линды \ olivepress \ Main.class D: \ JavaProjects \ OlivePressApp \ ком \ Линды \ olivepress \ нажмите \ OlivePress.class D: \ JavaProjects \ OlivePressApp \ ком \ Линды \ olivepress \ оливки \ Kalamata.class D: \ JavaProjects \ OlivePressApp \ ком \ Линды \ olivepress \ оливки \ Ligurian.class D: \ JavaProjects \ OlivePressApp \ ком \ Линды \ olivepress \ оливки \ Olive.class

Main.class в упаковке com.lynda.olivepress

Есть два других пакета:

com.lynda.olivepress.press

com.lynda.olivepress.olive

1) Создайте файл с именем "Manifest.txt" с двумя строками, первый с главным классом и второй пустой строкой.

Main-Class: com.lynda.olivepress.Main

D: \ JavaProjects \ OlivePressApp \ Manifest.txt

2) Создание JAR с манифестом и точкой входа в основной класс

D: \ JavaProjects \ OlivePressApp> jar cfm OlivePressApp.jar Manifest.txt com/lynda/olivepress/Main.class com/lynda/olivepress/*

3) Запустить JAR

java -jar OlivePressApp.jar

Примечание: com/lynda/olivepress/* означает включение двух других пакетов, упомянутых выше, до пункта 1)

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