2013-08-01 4 views
2

Я работаю над проектом с использованием Netbeans (версия для разработки 7.4), и я хочу проверить распределяемую банку. Когда я использую «java -jar filename.jar», программа работает нормально. Но когда я пытаюсь дважды щелкнуть файл jar, я получаю такую ​​ошибку: Error: Could not find or load main class W:\pathtoproject\dist\jarname.jar.Файл NetBeans Jar не выполняется

Это не имеет смысла, я никогда не видел ошибки, когда файл jar считает, что это основной класс. Я определил основной класс в свойствах проекта. Я извлек файл jar и увидел, что в файле манифеста указан правильный основной класс. Как я могу исправить эту ошибку?

Edit: манифеста в файле фляги имеет следующее:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.1 
Created-By: 1.7.0_21-b11 (Oracle Corporation) 
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build 
Main-Class: Driver 

Драйвер действительно имеет основной метод обычного.

Редактировать 2: Я не знаю, имеет ли это значение, но мой драйвер и некоторые другие важные классы не являются частью какого-либо пакета. Упаковываются только классы-помощники. Я был обучен программировать жесткий путь (например, блокнот и cmd), поэтому я не привык использовать все функции, которые Netbeans может предложить (например, упаковка).

+0

Что скажете в файле manifest.mf внутри банки? –

+0

Это будет легче прочитать, если вы отредактируете вопрос и добавите его там. Таким образом, класс «Драйвер» без пакета имеет основной метод? –

ответ

0

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

0

Опция, предоставляемая NetBeans для создания исполняемых банок, на самом деле весьма полезна. Единственный лучший инструмент для создания файлов jar, который я нашел, - это мастер для создания файлов jar в Eclipse. Я настоятельно рекомендую использовать один из этих инструментов.

Мастер создания исполняемого файла Eclipse стоит загрузить Eclipse for. После использования мастера один раз, вы можете сохранить сценарий ANT, чтобы вы могли вернуться к использованию командной строки, если хотите. Мастер Eclipse может выполнять сложные и невероятно полезные задачи, такие как упаковка вашего кода и всех необходимых библиотек в один автономный исполняемый файл jar.

Чтобы перейти к мастеру в Eclipse, перейдите в «Файл» -> «Экспорт ...» -> «Java» -> «Runnable JAR File».

Если вы все еще хотите использовать NetBeans, перейдите в «Запустить» -> «Настроить конфигурацию проекта» -> «Настроить ...» -> «Построить» -> «Упаковка» и выберите «Сборка JAR после компиляции». Возможно, вам придется сделать чистую сборку, прежде чем она сделает банку. Ваша банка появится в папке «dist» в корне ваших файлов проекта.

+0

У меня уже был установлен «Build JAR after Compiling». Netbeans уже строил банку, это не проблема. Проблема заключалась в том, что банка не работала. Оказывается, это был мой компьютер, а не JAR. – TheDuke777

0

Для баночки быть исполняемой, вы должны иметь дело с двумя вещами на файл манифеста:

  1. Запись «Main-Class» должна указывать на класс, который будет запускающим приложением, т.е. класс, в котором вы объявили основной метод для запуска своего приложения.
  2. После всех записей в файле манифеста вы должны оставить три строки пустым (я не нашел документацию, объясняющую, почему это требуется, но всегда работает для меня).

Вы можете использовать этот tool, чтобы проверить, соответствует ли файл jar, созданный Netbeans.

Надеюсь, я помог.

+0

Вы можете проверить содержимое файла манифеста, просто распакуя его. –

+0

Я знал о главном классе, но я никогда не слышал об этой второй части. Как оказалось, файл jar был в порядке. Это был мой компьютер, который вызывал проблему. Я подозреваю, что проблема была одной из настроек компании на моем рабочем компьютере. Когда я попробовал файл jar на своем ноутбуке, он работал нормально. – TheDuke777

0

Ваш проект должен содержать два или три java-файла, одним из которых является файл java, а другой - файл frame.java, имеющий кодировку кадра.

Создайте объект вашего файла фрейма в файле java под тем же проектом, а затем очистите и создайте проект.

Например, если у вас есть имя проекта как project11, а под ним у вас есть два файла, с именем project11.java и project11frame.java, а затем создать объект в project11.java:

project11frame pf = new project11frame(); 
pf.setVisible(true); 

Тогда чистый и построить свой проект!