Как настроить Основной класс в файле манифеста в банке, созданной проектом NetBeans
У меня есть следующая проблема. У меня есть Java-проект в моей среде IDE NetBeans 6.8. Когда я его компилирую, и он создает файл .jar, содержащий все возможное, META-INF не прав. Он не содержит класс для выполнения - с помощью метода main().
Когда я нажимаю кнопку "Выполнить" внутри IDE, все работает. Настройки проекта также заданы правильно - указывая на класс в моем проекте.
Я попытался добавить папку META-INF с файлом манифеста, но я не справился.
Есть ли способ сделать это вручную в NetBeans, потому что я обнаружил, что если я добавлю отсутствующий основной класс в манифест, все будет работать.
(я полагаю, я ударил какую-то ошибку...)
//редактировать:
В результате я хочу, чтобы ящик, созданный с помощью сборки NetBeans, выполнялся командой:
Цитата из Документация Sun:
Когда Main-Class установлен в файле манифеста, вы можете запустить приложение из командной строки:
java -jar app.jar
Ответы
Ответ 1
Я собираюсь составить резюме предлагаемых решений и тот, который помог мне!
После прочтения этого отчета об ошибке:
ошибка в способе, которым NetBeans 6.8 создает банку для проекта библиотеки Java.
-
Создайте файл manifest.mf в корне моего проекта
-
Измените manifest.mf. Мой выглядел примерно так:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.7.1
Created-By: 16.3-b01 (Sun Microsystems Inc.)
Main-Class: com.example.MainClass
Class-Path: lib/lib1.jar lib/lib2.jar
-
Откройте файл /nbproject/project.properties
-
Добавить строку
manifest.file=manifest.mf
-
Очистить + Сборка проекта
Теперь .jar успешно создан.
Большое спасибо vkraemer
Ответ 2
Похоже, вы столкнулись с ошибкой в том, как NetBeans 6.8 создает банку для проекта библиотеки Java.
Проблема подразумевает, что есть обход.
Я не смог проверить, что с NB 6.8 и/или NetBeans 6.9-dev...
Возможно, вы захотите зарегистрироваться на веб-сайте NetBeans.org/выпуске трекера и обновить эту проблему и добавить свое голосование.
Ответ 3
Это просто.
- Щелкните правой кнопкой мыши по проекту
- Перейдите в Свойства
- Перейдите в Выполнить в дереве Категории
- Установите Основной класс на правой боковой панели.
- Постройте проект
Вот оно. Надеюсь, это поможет.
Ответ 4
В 7.3 просто включите библиотеки Properties/Build/Package/Copy Dependent, а основной класс будет добавлен в манифест при построении в зависимости от выбранной цели.
Ответ 5
Добавление файла manifest.file = manifest.mf в project.properties и создание файла manifest.mf в каталоге проекта отлично работает в NB 6.9 и должно работать также в NB 6.8.
Ответ 6
Это еще проблема, касающаяся 7.2.1. Создайте библиотеку, потому что вы не знаете, что она сделает, если вы сделаете это приложение, и вы ввернуты.
Помогло ли это исправить. Измените nbproject/project.properties
, измените следующую строку на false, как показано:
mkdist.disabled=false
После этого вы можете изменить основной класс в свойствах, и он будет отражен в манифесте.
Ответ 7
Реальная проблема заключается в том, как Netbeans JAR реализует свои проекты. "Класс-путь:" в файле манифеста не нужен, когда вы публиковали свою программу для других пользователей. Если у вас есть внешняя библиотека, добавленная в Netbeans, она действует как пакет. Я предлагаю вам использовать такую программу, как WINRAR, для просмотра файлов в банке и добавления ваших библиотек в виде пакетов непосредственно в файл jar.
Как выглядит внутренняя часть файла jar:
MyProject.jar
Manifest.MF
Main-Class: mainClassFolder.Mainclass
mainClassFolder
Mainclass.class
packageFolder
IamUselessWithoutMain.class
Ответ 8
Я читаю и читаю и читаю, чтобы выяснить, почему я получаю ошибку класса, не найденной, оказывается, что manifest.mf имеет ошибку в строке:
Main-Class: com.example.MainClass
Я исправил ошибку, перейдя в диалоговое окно "Свойства проекта" (щелкните правой кнопкой мыши "Файлы проекта" ), затем "Выполнить" и "Основной класс" и скорректируйте все, что Netbeans решило поставить здесь. Netbean ввел имя проекта вместо имени класса. Не знаю, почему. Вероятно, опьяненный муратиной...