Как создать исполняемый файл .jar с NetBeans - PullRequest
6 голосов
/ 22 декабря 2009

Я хотел бы сделать Cli-приложение "двойным щелчком", но все равно не понимаю, как Я знаю, что должен как-то редактировать манифест, но это все. Я гуглил ofc. но безуспешно Спасибо за любые советы. Вот результат сборки, запуска и манифеста:

compile:
Created dir: /home/nick/NetBeansProjects/SemestralWork/dist
Building jar: /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar
Not copying the libraries.
To run this application from the command line without Ant, try:
java -jar "/home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar"
jar:
BUILD SUCCESSFUL (total time: 1 second)


java -jar /home/nick/NetBeansProjects/SemestralWork/dist/SemestralWork.jar

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main
Caused by: java.lang.ClassNotFoundException: semestralwork.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
Could not find the main class: semestralwork.Main. Program will exit.

MY MANIFEST created with build:

Manifest-Version: 1.0

Ant-Version: Apache Ant 1.7.1

Created-By: 14.0-b08 (Sun Microsystems Inc.)

Main-Class: semestralwork.Main

Class-Path: 

X-COMMENT: Main-Class will be added automatically by build

Ответы [ 6 ]

6 голосов
/ 25 декабря 2009

Эти две строки говорят вам все, что вам нужно знать:

Exception in thread "main" java.lang.NoClassDefFoundError: semestralwork/Main
Caused by: java.lang.ClassNotFoundException: semestralwork.Main

И еще одна подсказка отбрасывается выводом манифеста:

Main-Class: semestralwork.Main

Это означает, что JAR-файл ищет пакет с именем semestralwork и класс с именем Main внутри него. В этот момент происходит сбой, поскольку он не может найти ни пакет semestralwork, ни класс Main.

Как вы указали в своем вопросе, проблема действительно в файле манифеста. Вы можете отредактировать это непосредственно в своем JAR-файле, если хотите, но лучшей идеей будет сделать это из Netbeans:

  • Нажмите «Файл -> Свойства проекта (семестра)»
  • В открывшемся диалоговом окне на дереве слева выберите Run
  • Затем справа под полем, помеченным Main class:, введите полное имя класса класса, который вы хотите выполнить при запуске из командной строки.

В вашем случае, как я вижу из вашего комментария к ответу @ Аарона, если ваш основной класс находится в файле с именем encryption.java и в пакете по умолчанию (без пакета), просто введите encryption.

Как только это будет сделано, выполните очистку и сборку, затем попробуйте снова запустить его из командной строки.

НТН

4 голосов
/ 24 сентября 2010

Поскольку я столкнулся с той же проблемой, я могу немного прояснить решение.

Вы должны создать основной класс Java вне вашего метода (например, папка default_package), а затем вызвать ваш метод (папку), например, import your_folder.connected_class; в этом основном классе.

Надеюсь, я смогу помочь кому-то с той же проблемой.

1 голос
/ 24 декабря 2009

Проще сделать .exe из .jar без netbeans. Вот мои предложения: 1. Используйте специальное приложение для этого (например: JSmooth, JEXECreator и т. Д.) 2. Создайте программу на C ++, которая запускает JVM (см. Этот учебник )

0 голосов
/ 21 июля 2013

Это просто. Загрузите копию netbeans. Сделайте новый проект в NetBeans. Перейдите в основной класс в Projects Explorer. Это должна быть папка «YourProject» как класс YOURPROJECT.JAVA. Именно с этого файла yourproject.java вы хотите начать. Просто напишите свой код в общедоступную статическую пустую главную область. Вы можете запустить программу с зеленой кнопкой воспроизведения на верхней панели инструментов.

0 голосов
/ 22 декабря 2009

Откройте файл JAR с помощью инструмента ZIP (или попробуйте less ..., если вы используете Linux или jar tvf ...). Убедитесь, что там есть каталог semestralwork, содержащий файл Main.class.

0 голосов
/ 22 декабря 2009

Возможно, проблема связана с поиском пути по умолчанию. Вы должны попробовать изменить каталог на каталог jar и запустить его с помощью java -jar Semestral.jar. Также вы могли ошибочно назвать основной класс. Пожалуйста, укажите также структуру вашего пакета.

...