2013-06-30 4 views
0

Я создал проект утилиты java, который содержит XML, DB и другие подобные классы полезности. Это требует зависимостей сторонних разработчиков от некоторых общих библиотек Apache, поэтому я добавил его в свой проект java, настроив путь сборки в eclipse Juno. Теперь я хочу экспортировать этот проект java как файл jar. Когда я экспортирую этот проект в качестве исполняемого файла jar, он работает нормально, т. Е. Если я включу эту банку в какой-то другой проект java, я могу получить доступ к классам утилиты, но когда я просто экспортирую проект утилиты в качестве jar, я не в состоянии его использовать. Runnable jar требует основного класса, но я не хочу содержать основной класс в проекте java моей утилиты. Я сравнил оба файла jar. Разница, которую я обнаружил, заключалась в том, что в runnable jar-файле нет файла .classpath, кроме простого файла jar, который находится там. В файле runnable jar все файлы jar упоминаются в файле с именем MANIFEST-INF.mf, но в простом jar-файле он содержит только версию файла .mf. Может ли кто-нибудь сказать мне, как я могу сделать файл jar без основного класса и использовать его для других моих проектов java, так что мне просто нужно включить файл jar и использовать его как есть.Как экспортировать проект java как файл jar

+0

Посмотрите на maven. Возможно, это решает ваши проблемы. http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html – smsnheck

+0

Как план резервного копирования, я тоже смотрю на maven. но это действительно простая вещь, которую я должен уметь делать из самого затмения, не так ли? вы хотите сказать, что мой вышеприведенный сценарий невозможен затмение? –

+0

У этого парня такая же проблема: http://stackoverflow.com/questions/16422892/how-to-export-a-jar-file-including-my-classes-and-other-jar-files-extracted-us ? rq = 1, но никто не предоставил решение через eclipse –

ответ

0

Если вы просто экспортируете проект в файл jar, вы можете упаковать банку (войну), используя инструмент apache ant. ли что-то вроде этого:

<jar destfile="${dist}/lib/app.jar" 
    basedir="${build}/classes" 
    excludes="**/Test.class" 
/>` 
0

Я предполагаю, что не было предусмотрено в упадке, так как извлечение внешних 3-й библиотек классов партии в полезности проекта является то нестандартное. Это может привести к множеству проблем, так как ваш проект растет, а конфликты классов являются одним из них.
Если вы хотите продолжить свой подход, yon может экспортировать ваш проект в качестве обычного проекта jar. После этого вы откроете свой проект, а также другие сторонние библиотеки в утилите, например 7zip, и перетащите содержимое вашей сторонней библиотеки (кроме META-INF) в свою проектную банку. Это все.
Если вы, однако, хотите его автоматизировать, ant был бы вашим другом.

+0

Мне просто интересно, как apache commons или dom4j или log4j или любые другие банки. Как эти банки не являются исполняемыми файлами, и все же люди могут включать их в свой проект и использовать его ???? –

+0

@MrunalGosar Но эти банки не включают классы внешних зависимостей. Если вы просто хотите экспортировать свои классы в качестве банки, эта функция уже доступна. –