Как настроить Основной класс в файле манифеста в банке, созданной проектом 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 ввел имя проекта вместо имени класса. Не знаю, почему. Вероятно, опьяненный муратиной...