Как открыть файл * .jar?Это то же самое, что. * Exe для Windows? - PullRequest
1 голос
/ 05 апреля 2011

Я новичок в Java.Я только что создал свое первое Java-приложение с использованием NetBeans.Вот исходный код:

package helloWorld;


public class Main {

    public static void main( String[] args ) {

        System.out.println( "What's your name, sparky? =]" );
        String sparkysName = System.console().readLine();

        System.out.println( "Was that so hard, " + sparkysName + "? =P" );

    }

}

После компиляции у меня есть файл helloWorld.jar .И вот мои глупые вопросы ...

  1. Является ли расширение * .jar чем-то вроде * .exe для Windows, только для Java (будет работать на любой платформе с Java)?

  2. Я могу запустить свой helloWorld.jar , но он остается на экране всего 0,1 секунды, поэтому я ничего не вижу ... Я думаю, что произошла ошибка,Как я могу это исправить (NetBeans не будет жаловаться, и я мог бы скомпилировать его)?

Правка №1:

В моем *.Файл JAR внутри У меня есть Main.class , который владеет main ().Так что это не проблема.Я только что обнаружил, что он пытается сказать мне что-то вроде:

Исключение в потоке "main" java.lang.NoClassDefFoundError ...

Ответы [ 6 ]

1 голос
/ 05 апреля 2011
  1. jar - это архив java. В отличие от .exe он не может быть выполнен на процессоре, но на JVM. Таким образом, фактическая команда для выполнения файла jar - java -jar jarfilename, что означает, что вы вызываете виртуальную машину java с вашим файлом jar в качестве параметра.

  2. Это потому, что он ничего не ждет, он просто печатает две строки и выходит. Если вы запустите его из командной строки, вы увидите. Если выполнение программы дольше / программа ожидает какого-то ввода, она не будет закрыта так быстро

1 голос
/ 05 апреля 2011

Вы можете сделать двойной щелчок, чтобы выполнить его, но пользователь увидит любой результат, только если вы используете среду пользовательского интерфейса, такую ​​как Swing или AWT.

В вашем случае System.out.printlns и System.console (). readLine () будет доступна только для командной консоли.

0 голосов
/ 05 апреля 2011

Файл jar просто сжимает все файлы Java вместе.Вы можете выбрать все файлы вашего приложения и поместить их в файл jar.Но JVM способен выполнять файл JAR.Для этого вам нужно указать, какой из java-файлов (находящихся в jar-файле) имеет метод main.Это должно быть сделано при создании jar.

Таким образом, файл jar можно запустить на любой платформе, на которой установлена ​​JVM.В вашем случае вы не можете видеть командную строку, потому что вы просто отображаете что-то, и когда программа завершается, командная строка исчезает.Следовательно, попробуйте сделать это:

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int i = br.readLine();

в конце файла, и вы увидите, что командная строка не завершается и ожидает вашего ввода.Он работает точно так же в приложениях ac или c ++, где командная строка исчезает, если у вас нет getch () или чего-то похожего на него.

Для справки, у вас есть учебник по созданию и запуску файлов Jar здесь.

0 голосов
/ 05 апреля 2011

Прежде всего, Jar-файл - это обычный Zip-файл, поэтому вы можете открыть его с помощью любой программы, способной открывать Zip-файлы - заглянуть внутрь.

Чтобы запустить код из Jar-файла, необходимо указать имяОсновной класс в файле манифеста: специальный файл в специальном месте со специальным форматом.JDK / JRE ищет в этом файле Jar-файл и запускает указанный там класс.

Google для MANIFEST.MF.

0 голосов
/ 05 апреля 2011

.jar-файл использует стандартный формат сжатия Zip.Вы можете открыть любой файл JAR с чем угодно, что может открыть файлы Zip.(WinZip, WinRar, 7-zip и т. Д.).

0 голосов
/ 05 апреля 2011

Да, вы можете просто дважды щелкнуть по вашему .jar, чтобы открыть его, если java установлен и в вашем PATH, или запустить java -jar "jar_path" в cmd.Кроме того, он не останавливается, потому что выполнение выполняется после вашей последней инструкции, поэтому он завершается.Я не помню точный синтаксис, но попробуйте прочитать ключ от пользователя.Это приостановит вашу программу, пока вы не нажмете клавишу.

Редактировать: я думаю System.in.read(); это то, что вы ищете.

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