как настроить основной класс в файле манифеста в банке, созданной проектом netbeans

<p>у меня следующая проблема. у меня есть проект java в моем netbeans ide 6.8. когда я компилирую его и он создает файл .jar, содержащий все возможное, meta-inf не подходит. он не содержит класс для выполнения - с методом main (). </p><p>когда я нажимаю кнопку run внутри ide, все работает. настройки проекта также установлены правильно - указание на класс в моем проекте.</p><p>я попытался добавить папку meta-inf с файлом манифеста, но мне не удалось.</p><p>есть ли способ сделать это вручную в netbeans, потому что я обнаружил, что если я добавлю отсутствующий класс main в манифест, все будет работать.</p><p>(полагаю, я столкнулся с какой-то ошибкой ...)</p><p>//edit: в результате я хочу, чтобы файл jar, созданный при сборке netbeans, выполнялся командой:</p><p>цитата из <a href="http://java.sun.com/docs/books/tutorial/deployment/jar/run.html">sun documentation</a> :</p><p>если в файле манифеста задан main-class, вы можете запустить приложение из командной строки: <code>java -jar app.jar</code></p>

<p>я собираюсь сделать резюме предлагаемых решений и того, которое мне помогло!</p><p>после прочтения этого сообщения об ошибке: <a href="https://netbeans.org/bugzilla/show\_bug.cgi?id=177194">ошибка в способе, которым netbeans 6.8 создает банку для проекта библиотеки java.</a> </p><ol> <li><p>создайте файл manifest.mf в корне моего проекта</p></li> <li><p>редактировать manifest.mf. мой выглядел примерно так:</p> <pre><code>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 </code></pre></li> <li><p>открыть файл /nbproject/project.properties</p></li> <li><p>добавить строку</p> <p><code>manifest.file=manifest.mf</code></p></li> <li><p>clean + сборка проекта</p></li> </ol><p>теперь .jar успешно собран.</p><p>большое спасибо <strong>vkraemer</strong></p>

<p>похоже, вы столкнулись с ошибкой <a href="https://netbeans.org/bugzilla/show\_bug.cgi?id=177194">в том, как netbeans 6.8 создает банку для проекта библиотеки java</a> . </p><p>проблема подразумевает, что существует обходной путь.</p><p>мне не удалось проверить это с nb 6.8 и/или netbeans 6.9-dev ...</p><p>вы можете зарегистрироваться на веб-сайте/трекере проблем netbeans.org, обновить проблему и добавить свой «голос».</p>

<p>это просто. </p><ul> <li>щелкните правой кнопкой мыши на проекте</li> <li>перейти к<strong> свойства </strong></li> <li>перейти к<strong> выполнить </strong>в<strong> категории </strong>дерево</li> <li>установите<strong> главный класс </strong>на правой боковой панели.</li> <li>постройте проект</li> </ul><p>это оно. надеюсь это поможет.</p>

<p>в 7.3 просто включите свойства/сборка/пакет/копирование зависимых библиотек, и основной класс будет добавлен в манифест при сборке в зависимости от выбранной цели.</p>

<p>не стесняйтесь, но загляните в свои файлы проекта после того, как вы впервые создали свой проект. найдите файл манифеста и выберите открыть с помощью блокнота.</p><p>добавьте строку:</p><pre><code>main-class: package.mymainclassname </code></pre><p>где <code>package</code> - это ваш пакет, а <code>myclassname</code> - это класс с методом <code>main(string[] args)</code>.</p>

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

<p>я читаю, читаю и читаю, чтобы выяснить, почему я получаю ошибку «класс не найден», оказывается, что в<em> manifest.mf </em>была ошибка в строке: </p><pre><code>main-class: com.example.mainclass </code></pre><p>я исправил ошибку, перейдя в<em> свойства проекта </em>диалоговое окно (щелкните правой кнопкой мыши<em> файлы проекта </em>), затем<em> выполнить </em>и<em> основной класс </em>и исправил все, что netbeans решил разместить здесь. netbean вставил имя проекта вместо имени класса. понятия не имею почему. наверное, опьянен от муратины ...</p>

<p>это проблема все еще на 7.2.1. создайте библиотеку, потому что вы не знаете, что она будет делать, если вы сделаете это приложением, и вы облажались.</p><p>нашел, как это исправить, хотя. отредактируйте <code>nbproject/project.properties</code>, измените следующую строку на false, как показано:</p><p><code>mkdist.disabled=false</code></p><p>после этого вы можете изменить основной класс в свойствах, и это будет отражено в манифесте.</p>

<p>реальная проблема заключается в том, как netbeans jars свои проекты. «class-path:» в файле manifest не нужен при фактической публикации вашей программы для использования другими. если в netbeans добавлена внешняя библиотека, она действует как пакет. я предлагаю вам использовать такую программу, как winrar, для просмотра файлов внутри jar и добавлять свои библиотеки в виде пакетов непосредственно в файл jar.</p><p>как должна выглядеть внутренняя часть jar-файла:</p><pre><code>myproject.jar manifest.mf main-class: mainclassfolder.mainclass mainclassfolder mainclass.class packagefolder iamuselesswithoutmain.class </code></pre>