Как мне создать исполняемый файл JAR из моей программы, чтобы я мог запускать его по двойному щелчку или из командной строки? - PullRequest
2 голосов
/ 14 июня 2011

Я использую программу Eclipse для компиляции моего .jar

http://pastebin.com/AY79DbgY

Это должно быть только консольное окно.Я только начинаю на Java, поэтому я понятия не имею, что я сделал не так.

Когда я пытаюсь запустить .jar, который я скомпилировал в Eclipse, он вообще не запускается, но если я открываю cmdи попробуйте запустить его через него, он распечатывает это, ничего из того, что я совсем не понимаю:

Exception in thread "main" java.lang.NoClassDefFoundError: server
Caused by: java.lang.ClassNotFoundException: server
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: server.  Program will exit.

Я просто хотел создать .jar, который я мог бы запускать с любого компьютера без использованияЗатмение.Там он прекрасно работает в консоли.

Кроме того, время от времени, когда я завершаю сценарий в консоли в Eclipse, я получаю эту ошибку, но в остальном кажется, что она работает нормально:

        Exception in thread "main" java.util.NoSuchElementException: No line found
            at java.util.Scanner.nextLine(Unknown Source)
            at finalproject.main(finalproject.java:432)

Так что я вроде понятия не имею, что я делаю в этот момент.

Если мой набор текста кажется мне молодым, это правда, мне всего 15.

Ответы [ 3 ]

3 голосов
/ 14 июня 2011

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

0 голосов
/ 14 июня 2011

В вашем JAR-файле у вас должен быть файл с именем MANIFEST.MF (в папке META-INF) Это описывает различные свойства вашего файла JAR.

Вы должны отредактировать его и добавить:

Main-Class: finalproject

Я бы поместил ваш класс в пакет, потому что наличие его в пакете по умолчанию вызывает небольшие проблемы с classpath.

Вы можете открыть файл JAR, используя winzip или winrar, и отредактировать файл MANIFEST.MF напрямую, просто для тестирования, но в действительности вы должны иметь его снаружи вместе с классами, которые вы упаковываете в JAR, чтобы каждый раз, когда вы генерировали JAR файл, который вы включаете в него вместе с остальными классами.

Вот как вы включаете файл с дополнениями в манифест по умолчанию при создании файла JAR. http://download.oracle.com/javase/tutorial/deployment/jar/modman.html

0 голосов
/ 14 июня 2011

Я не знаю, что вы на самом деле здесь сделали, поэтому вот некоторые предположения из моего стеклянного шара:

  • Вы вызываете вашу программу по java -cp file.jar server, в то время как она должна быть java -cp file.jar finalproject.

    Используйте последнюю команду.

  • Ваша IDE указывает на некоторый основной класс (server) в Манифесте Jar, который не существует, и вы используете java -jar file.jar. Это также объясняет, почему вы не можете запустить его из Eclipse.

    Проверьте настройки сборки, чтобы указать правильный основной класс.

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