Я хотел бы сделать, "дважды щелкают" по cli приложению, но все еще не добираются как. Я знаю, что должен propably так или иначе отредактировать декларацию, но это - все. Я погуглил отдел. но никакой успех. Спасибо за любые подсказки. Вот вывод от сборки, выполненной, и декларация:
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
Откройте файл JAR с помощью инструмента ZIP (или попробуйте less ...
, если у вас Linux, или jar tvf ...
). Убедитесь, что в нем есть каталог semestralwork
, содержащий файл Main.class
.
Возможно, проблема в пути поиска класса по умолчанию. Вы должны попробовать изменить каталог на место, где находится jar и запустить с java -jar Semestral.jar. Также возможно, что вы неправильно назвали основной класс. Пожалуйста, включите также структуру вашего пакета.
.Эти две строки говорят вам все, что вам нужно знать:
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:
, введите полное имя класса , который вы хотите выполнить при запуске из командной строки. В вашем случае, как я вижу из вашего комментария к ответу @Aaron, если ваш основной класс находится в файле с именем encryption.java
, и он находится в пакете по умолчанию (без пакета), просто введите encryption
.
После этого выполните чистку и сборку, а затем попробуйте выполнить его из командной строки еще раз.
HTH
.Проще сделать .exe из .jar без нетбобов. Вот мои предложения: 1. Используйте для этого специальное приложение (например: JSmooth, JEXECreator и т.д.). 2. Создайте программу на C++, которая запускает JVM (см. это tutorial)
.