Как библиотеку засунуть вместе с самой программой?

Здравствуйте, пишу программу в IDE NetBeans. Программа работает с MySQL, а следовательно я прикрепил к проекту библиотеку. При сборке проекта у меня в месте с jar файлом моей программы появляется папка lib в которой и находятся и все мои библиотеки, которые я использовал в проекте.
Но можно ли как то собрать проект так, чтобы появлялся просто один jar архив в котором будут находится все библиотеки и моя программа?
Заранее большое спасибо!
  • Вопрос задан
  • 1585 просмотров
Решения вопроса 2
EugeneP2
@EugeneP2
Java Dev
Используйте maven

Если хотите собрать исполнимы jar файл с включенным в него зависимостями, я использую maven-assembly-plugin:
<packaging>jar</packaging>
   ....
	<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-assembly-plugin</artifactId>
				<configuration>
					<archive>
						<manifest>
							<mainClass>ru.toster.MainClass</mainClass>
						</manifest>
					</archive>
					<descriptorRefs>
						<descriptorRef>jar-with-dependencies</descriptorRef>
					</descriptorRefs>
				</configuration>
				<executions>
					<execution>
						<id>make-assembly</id> <!-- this is used for inheritance merges -->
						<phase>package</phase> <!-- bind to the packaging phase -->
						<goals>
							<goal>single</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
 </build>
...


потом в командной строке

mvn assembly:single

Для сборки war архива никаких доп. плагинов можно не прописывать, а запустить команду
mvn package

в pom файле указать только тип архива "war"
<packaging>war</packaging>

Если не пользуетесь mvn, в IDE обычно есть встроенные средства для сборки, например в Eclipse IDE:
File -> Export -> Runnable Jar File -> Package required libraries into generated JAR


Можно собрать исполнимый jar файл вручную и запаковать в него все нужные библиотеки jar, но сами библиотеки должны бить в распакованном виде, т.е. prog.jar/lib/MySql.jar - такой работать не будет, джава не может грузить джары из джаров:) Нужно будет все либы распаковать вручную, чтоб было: prog.jar/com.mysql.MySqlDriver.class (это пример).

Например когда вы используете Eclipse для сборки, он встраивает свой загрузчик в архив, потому jar/jar работает. А выше указанный maven плагин как раз распаковать все архивы зависимостей.
Ответ написан
AlexXYZ
@AlexXYZ
O Keep Clear O
Конечно можно. war/jar - это просто zip-архивы. Вроде я даже экспериментировал простым копированием jar-файлов-библиотек внутрь jar. Загрузчик java умеет разбираться с содержимым. На будущее - посмотрите maven.

stackoverflow.com/questions/6066257/how-to-compile...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы