Как настроить основной класс в файле манифеста в банке, созданной проектом NetBeans
У меня следующая проблема. У меня есть Java-проект в моей среде IDE NetBeans 6.8. Когда я компилирую его и он создает файл.jar, содержащий все возможное, META-INF не подходит. Он не содержит класс для выполнения - с методом main().
Когда я нажимаю кнопку Run внутри IDE, все работает. Настройки проекта также установлены правильно - указание на класс в моем проекте.
Я попытался добавить папку META-INF с файлом манифеста, но мне не удалось.
Есть ли способ сделать это вручную в NetBeans, потому что я обнаружил, что если я добавлю отсутствующий класс Main в манифест, все будет работать.
(Полагаю, я столкнулся с какой-то ошибкой...)
// edit: В результате я хочу, чтобы файл jar, созданный при сборке NetBeans, выполнялся командой:
Цитата из документации Sun:
Когда Main-Class установлен в файле манифеста, вы можете запустить приложение из командной строки: java -jar app.jar
9 ответов
Я собираюсь сделать резюме предлагаемых решений и того, которое мне помогло!
После прочтения этого отчета об ошибке: ошибка в том, как 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
Clean + Сборка проекта
Теперь.jar успешно собран.
Спасибо большое вкраемер
Похоже, вы столкнулись с ошибкой в том, как NetBeans 6.8 создает банку для проекта библиотеки Java.
Проблема подразумевает, что существует обходной путь.
Я не смог проверить это с NB 6.8 и / или NetBeans 6.9-dev...
Вы можете зарегистрироваться на веб-сайте / трекере проблем NetBeans.org, обновить проблему и добавить свой "голос".
Это просто.
- Щелкните правой кнопкой мыши на проекте
- Перейти к свойствам
- Перейти к Run в дереве категорий
- Установите основной класс в правой боковой панели.
- Постройте проект
Это оно. Надеюсь это поможет.
В 7.3 просто включите Свойства / Сборка / Пакет / Копирование зависимых библиотек, и основной класс будет добавлен в манифест при сборке в зависимости от выбранной цели.
Реальная проблема заключается в том, как Netbeans JARs свои проекты. "Class-Path:" в файле Manifest не нужен при фактической публикации вашей программы для использования другими. Если в Netbeans добавлена внешняя библиотека, она действует как пакет. Я предлагаю вам использовать такую программу, как WINRAR, для просмотра файлов внутри jar и добавлять свои библиотеки в виде пакетов непосредственно в файл jar.
Как должна выглядеть внутренняя часть jar-файла:
MyProject.jar
Manifest.MF
Main-Class: mainClassFolder.Mainclass
mainClassFolder
Mainclass.class
packageFolder
IamUselessWithoutMain.class
Добавление manifest.file=manifest.mf в project.properties и создание файла manifest.mf в каталоге проекта прекрасно работает в NB 6.9 и также должно работать в NB 6.8.
Брат, вам не нужно устанавливать путь к классу, просто следуйте этим простым шагам (я использую Apache NetBeans)
Шаги:
извлеките файл jar, который вы хотите добавить в свой проект.
копируйте только те пакеты (папку), которые вам нужны в проекте. (не копировать файл манифеста)
откройте главный файл jar проекта (dist/file.jar) с помощью WinRAR.
вставьте эту папку или пакет в основной файл jar проекта.
Эти пакеты работают в вашем проекте на 100%.
предупреждение: не вносите никаких изменений в файл манифеста.
Другой способ:
- В моем случае папка lib присутствует за пределами папки dist(основной файл jar).
нам нужно переместить папку lib в папку dist. затем мы устанавливаем путь к классу из файла manifest.mf основного файла jar.
Отредактируйте manifest.mf и ДОБАВЬТЕ этот тип строки
- Путь к классу: lib\ имя_папки \jarfilename.jar lib\ имя_папки \ jarfilename.jar
Предупреждение: папка lib должна находиться внутри папки dist, иначе файл jar не получит доступ к файлам jar папки lib
Не стесняйтесь, но загляните в файлы вашего проекта после того, как вы впервые создали свой проект. Найдите файл манифеста и выберите открыть с помощью блокнота.
Добавьте строку:
Main-Class: package.myMainClassName
куда package
ваша посылка и myClassName
это класс с main(String[] args)
метод.
Это проблема все еще на 7.2.1 . Создайте библиотеку, потому что вы не знаете, что она будет делать, если вы сделаете это приложением, и вы облажались
Нашел, как это исправить, хотя. редактировать nbproject/project.properties
измените следующую строку на false, как показано:
mkdist.disabled=false
После этого вы можете изменить основной класс в свойствах, и это будет отражено в манифесте.
Я читаю, читаю и читаю, чтобы выяснить, почему я получаю ошибку "класс не найден", оказывается, что в файле manifest.mf произошла ошибка в строке:
Main-Class: com.example.MainClass
Я исправил ошибку, перейдя в диалоговое окно " Свойства проекта " (щелкнув правой кнопкой мыши " Файлы проекта"), затем " Выполнить" и " Основной класс" и исправив все, что NetBeans решил разместить здесь. NETbean вставил имя проекта вместо имени класса. Понятия не имею почему. Наверное, опьянен от муратины...