2015-06-18 3 views
1

Я написал программу в NetBeans и теперь хочу поделиться ею с моим коллегой. Однако, когда он пытается запустить его на своем компьютере, он получает сообщение об ошибке:java - Совместное использование исполняемого файла .jar

"Could not find the main class: excelcomparator.ExcelComparator. Program will exit." 

Вот запутанная часть: Я написал это на моем ноутбуке, который имеет NetBeans, и чтобы убедиться, что она работала, скопировал dist на флеш-накопитель и запустил его на моем компьютере. Он работал нормально. Когда я отправил его по электронной почте моему коллеге, он получил эту ошибку.

Основываясь на том, что я видел, некоторые решения предназначены для запуска .jar из командной строки. Хотя это может сработать, мне нужно, чтобы файл был двойным щелчком мыши.

Я отправил своему коллеге файл по электронной почте в ZIP-папке, возможно ли, что распаковка всей папки также испортила файл .jar (не понимаю, зачем это нужно, но включила что-нибудь, что могло бы помочь)?

Это MANIFEST.mf, который находится в файле .jar. Существует возврат каретки в конце файла, он просто не копирует хорошо в это текстовое поле:

Manifest-Version: 1.0 
Ant-Version: Apache Ant 1.9.4 
Created-By: 1.7.0_71-b14 (Oracle Corporation) 
Class-Path: lib/poi-3.12-20150511.jar lib/poi-examples-3.12-20150511.j 
ar lib/poi-excelant-3.12-20150511.jar lib/poi-ooxml-3.12-20150511.jar 
    lib/poi-ooxml-schemas-3.12-20150511.jar lib/poi-scratchpad-3.12-2015 
0511.jar 
X-COMMENT: Main-Class will be added automatically by build 
Main-Class: excelcomparator.ExcelComparator 

Я послал dist папку, которая включает в себя lib папку, которая содержит все дополнительные .jars.

Если есть какая-либо другая соответствующая информация, которую мне нужно включить, сообщите мне. Благодаря!

+0

Ваша программа зависит от множества файлов jar, которые должны находиться в папке lib. Вы также отправили их своему коллеге? Какова полная трассировка стека исключения? Используйте java -jar yourjar.jar из командной строки. –

+0

@JBNizet На моей машине нет исключения, и мой коллега не запускает его из командной строки. Единственная ошибка, которая возникает, это всплывающее окно с сообщением об ошибке. Я включил дополнительные файлы jar и соответствующим образом отредактировал его в вопросе. Благодаря! – Salmononius2

+0

1. У вашего коллеги должна быть папка lib в том же каталоге с файлом jar, который он пытается запустить. У него есть это? Если у него только папка dist, она не будет собирать файлы jar 2. Является ли ваш основной класс в пакете? – melis

ответ

0

Если вы хотите, чтобы JAR был двойным щелчком мыши, вы должны связать все зависимости в один JAR-файл.

Это достигается с помощью Maven сборки плагин: http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

Если вы не знаете, как использовать Maven, Eclipse имеет хороший мастер. Я не уверен, как это работает на NetBeans, но тот же вопрос задавался много раз, например. здесь Netbeans Export to Jar, include all library files

+0

Еще одна полезная ссылка может быть: http://arunasujith.blogspot.de/2011/08/how-to-build-fat-jar-using-netbeans.html –

+0

Я использую eclipse, (File Export), никогда не имел вопрос с ним. Однако это может зависеть от настроек безопасности компьютера, можно ли дважды щелкнуть банку. Иногда вам нужно щелкнуть правой кнопкой мыши и запустить как администратор. –

+0

Стандартный формат jar не позволяет встраивать файлы jar в файлы jar. Для этого потребуется специальный загрузчик классов. Объединение библиотек за пределами файла jar является стандартным способом. –

0

Просто, чтобы закончить это прочь, я буду писать то, что в конечном итоге работает для меня:

По предложению Франца Беккера based on this question, я в комплекте всю программу в один файл .jar.

Я по-прежнему получал ту же ошибку на компьютере моего коллеги, поэтому, основываясь на других предложениях, которые я видел, я догадался, что проблема была основана на разных версиях Java, установленных на наших компьютерах. То, что я сделал, это перекомпилировать программу на более раннюю версию Java, которая работает с любой версией от того и другого (другие люди предлагали переустановить Java на компьютере пользователя. В большинстве сценариев это слишком нереально).

Чтобы изменить уровень соответствия (в Eclipse): щелкните правой кнопкой мыши по проекту в обозревателе пакетов, выберите свойства. Выберите Java Compiler в параметрах слева. Снимите флажок «Использовать соответствие из среды исполнения [по умолчанию целевой JavaSE] на« пути сборки Java »и изменить« Уровень соответствия компилятора »на ваш уровень выбора (я выбрал самый низкий доступный вариант 1.3, поскольку я предполагал, что что-то выше, чем это не будет проблемой).

Затем я экспортировал файл (Файл -> Свойства -> Java -> Runnable JAR File) и имел рабочий, clickable .jar.

Спасибо всем за помощь!

Смежные вопросы