Допустим имеется у нас маленькая программка, которая работает с базой данный SQLite. Создадим JAR-файл и поместим в него все необходимое для работы. Берем sqlite-jdbc-3.7.2.jar, распаковываем в наш каталог с проектом.
alexey@G580:~/java-src/samples/DisplayQueryResults$ ll
итого 6,2M
drwxr-xr-x 3 alexey 4,0K авг. 27 2010 maven/
drwxr-xr-x 5 alexey 4,0K авг. 27 2010 native/
drwxr-xr-x 4 alexey 4,0K авг. 27 2010 org/
-rw-rw-r-- 1 alexey 1,1K окт. 12 15:30 DisplayQueryResults$1.class
-rw-rw-r-- 1 alexey 531 окт. 12 15:30 DisplayQueryResults$2.class
-rw-rw-r-- 1 alexey 2,6K окт. 12 15:30 DisplayQueryResults.class
-rw-rw-r-- 1 alexey 3,1M окт. 12 17:52 DisplayQueryResults.jar
-rw-rw-r-- 1 alexey 2,7K окт. 12 14:34 DisplayQueryResults.java
-rw-r--r-- 1 alexey 69 окт. 12 17:35 MANIFEST.MF
-rw-r--r-- 1 alexey 4,0K окт. 12 15:25 pressure.db
-rw-rw-r-- 1 alexey 2,7K окт. 12 15:30 ResultSetTableModel.class
-rw-rw-r-- 1 alexey 2,4K окт. 12 15:32 ResultSetTableModel.java
-rw------- 1 alexey 3,1M июня 22 13:29 sqlite-jdbc-3.7.2.jar
Создадим MANIFEST.MF, не забываем о пустой строке в конце файла. Так как файлики лежат у нас прямо под ногами, то добавляем в MANIFEST.MF только одну строчку: **Class-Path: .**
Manifest-Version: 1.0
Class-Path: .
Main-Class: DisplayQueryResults
Теперь создаем JAR. Добавляем в него наши классы скомпилированные и каталоги в которые распаковался наш sqlite-драйвер.
jar cvfm DisplayQueryResults.jar MANIFEST.MF org/ native/ *.class
Запускаем нашу программу:
java -jar DisplayQueryResults.jar
{{:prog:jar.png?200|}}
Теперь сделаем **JAR** не включая в него библиотеки, а просто указав в манифесте где их брать. Для простоты положим **sqlite-jdbc-3.8.6.jar** в тот же каталог, в котором лежат наши ***.class** Подправим **MANIFEST.MF**
Manifest-Version: 1.0
Created-By: 1.7.0_65 (Oracle Corporation)
Class-Path: sqlite-jdbc-3.8.6.jar
Main-Class: DisplayQueryResults
Создадим **JAR**
jar -cfm DisplayQueryResults.jar MANIFEST.MF *.class