Как настроить основной класс в файле манифеста в банке, созданной проектом 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.

  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. 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)

Шаги:

  1. извлеките файл jar, который вы хотите добавить в свой проект.

  2. копируйте только те пакеты (папку), которые вам нужны в проекте. (не копировать файл манифеста)

  3. откройте главный файл jar проекта (dist/file.jar) с помощью WinRAR.

  4. вставьте эту папку или пакет в основной файл jar проекта.

  5. Эти пакеты работают в вашем проекте на 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 вставил имя проекта вместо имени класса. Понятия не имею почему. Наверное, опьянен от муратины...

Другие вопросы по тегам