Как настроить основной класс в файле манифеста в банке, созданной проектом NetBeans - PullRequest
18 голосов
/ 17 мая 2010

У меня следующая проблема. У меня есть Java-проект в моей среде IDE NetBeans 6.8. Когда я компилирую его и он создает файл .jar, содержащий все возможное, META-INF не подходит. Он не содержит класс для выполнения - с методом main ().

Когда я нажимаю кнопку Run внутри IDE, все работает. Настройки проекта также установлены правильно - указание на класс в моем проекте.

Я попытался добавить папку META-INF с файлом манифеста, но мне не удалось.

Есть ли способ сделать это вручную в NetBeans, потому что я обнаружил, что если я добавлю отсутствующий класс Main в манифест, все будет работать.

(Полагаю, я попал в какую-то ошибку ...)

// редактирование: В результате я хочу, чтобы файл jar, созданный при сборке NetBeans, выполнялся командой:

Цитата из Документация Sun :

Если в файле манифеста задан Main-Class, вы можете запустить приложение из командной строки: java -jar app.jar

Ответы [ 9 ]

28 голосов
/ 17 мая 2010

Я собираюсь сделать резюме предлагаемых решений и того, которое мне помогло!

После прочтения этого сообщения об ошибке: ошибка в способе, которым NetBeans 6.8 создает банку для проекта библиотеки Java.

  1. Создать файл manifest.mf в корне моего проекта

  2. Редактировать 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
    
  3. Открыть файл /nbproject/project.properties

  4. Добавить строку

    manifest.file=manifest.mf

  5. Очистка + Сборка проекта

Теперь .jar успешно собран.

Большое спасибо Вкраемер

4 голосов
/ 17 мая 2010

Похоже, вы сталкиваетесь с ошибкой в том, как NetBeans 6.8 создает банку для проекта библиотеки Java .

Эта проблема подразумевает, что существует обходной путь.

Мне не удалось проверить это с помощью NB 6.8 и / или NetBeans 6.9-dev ...

Вы можете зарегистрироваться на веб-сайте / трекере проблем NetBeans.org, обновить проблему и добавить свой «голос».

3 голосов
/ 17 мая 2010

Это просто.

  • Щелкните правой кнопкой мыши по проекту
  • Перейти к Свойства
  • Перейти к Выполнить в Категории Дерево
  • Установите Основной класс на правой боковой панели.
  • Сборка проекта

Вот и все. Надеюсь, это поможет.

1 голос
/ 20 апреля 2013

В 7.3 просто включите Свойства / Сборка / Пакет / Копирование зависимых библиотек, и главный класс будет добавлен в манифест при сборке в зависимости от выбранной цели.

0 голосов
/ 11 июля 2018

Не стесняйтесь, но загляните в файлы вашего проекта после того, как вы впервые его построили. Найдите файл манифеста и выберите открыть с помощью блокнота.

Добавить строку:

Main-Class: package.myMainClassName

Где package - ваш пакет, а myClassName - класс с методом main(String[] args).

0 голосов
/ 31 мая 2017

Я читаю, читаю и читаю, чтобы выяснить, почему я получаю сообщение об ошибке «класс не найден». Оказывается, в manifest.mf произошла ошибка в строке:

Main-Class: com.example.MainClass

Я исправил ошибку, открыв диалоговое окно Свойства проекта (щелкнув правой кнопкой мыши Файлы проекта ), затем Выполнить и Основной класс и исправил все, что Netbeans решил поместить здесь. Netbean вставил имя проекта вместо имени класса. Понятия не имею почему. Наверное, опьянен муратиной ...

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

Реальная проблема заключается в том, как Netbeans JARs свои проекты. «Class-Path:» в файле Manifest не нужен при фактической публикации вашей программы для использования другими. Если в Netbeans добавлена ​​внешняя библиотека, она действует как пакет. Я предлагаю вам использовать такую ​​программу, как WINRAR, для просмотра файлов внутри jar и добавлять свои библиотеки в виде пакетов непосредственно в файл jar.

Как должна выглядеть внутренняя часть файла jar:

MyProject.jar

    Manifest.MF
         Main-Class: mainClassFolder.Mainclass

    mainClassFolder
         Mainclass.class

    packageFolder
         IamUselessWithoutMain.class
0 голосов
/ 04 января 2013

Это проблема все еще на 7.2.1. Создайте библиотеку, потому что вы не знаете, что она будет делать, если вы сделаете это приложением, и вы облажались.

Хотя нашел, как это исправить. Отредактируйте nbproject/project.properties, измените следующую строку на false, как показано:

mkdist.disabled=false

После этого вы можете изменить основной класс в свойствах, и это будет отражено в манифесте.

0 голосов
/ 17 мая 2010

Добавление manifest.file = manifest.mf в project.properties и создание файла manifest.mf в каталоге проекта прекрасно работает в NB 6.9 и также должно работать в NB 6.8.

...