Nie wiem jak dołączyć własną bibliotekę w pliku jar. Ale nie chcę tego robić w NetBeans, bo tam umiem. Chcę z pewnych powodów zrobić to w linii poleceń czystym JDK i Notepadem++ (Windows 7).
Specjalnie zrobiłem najprostszy program (notepad++, zero IDE). Struktura plików i katalogów to:
D:\Klasa.java
<- to klasa główna
D:\jlib\Zegar.java
<- to biblioteka
Dam treść plików, bo może coś od tego zależy, chociaż wątpię.
Klasa.java:
import jlib.Zegar;
public class Klasa{
public static void main (String args[]){
System.out.println("Hello, tu klasa");
new Zegar();
}
}
Zegrar.java:
package jlib;
import java.util.Date;
public class Zegar{
public Zegar(){
System.out.println("Dzisiaj jest " + new Date());
}
}
Teraz wchodzę do wiersza poleceń. Jeszcze dodam, że mam katalog bin Javy w zmiennej PATH i polecenia java, javac i jar działają. Nie mam zmiennej CLASSPATH, bo gdzieś przeczytałem, że można się bez tego obejść, a dodawać coś do niej warto, gdy chce się tej biblioteki używać częściej. Uznałem, że obejdę się na razie bez tego.
D:\>javac \jlib\Zegar.java
D:\>jar -cvf bibl.jar jlib\Zegar.class
added manifest
adding: jlib/Zegar.class(in = 606) (out= 371)(deflated 38%)
Mam w katalogu D: plik bibl.jar. Teraz chcę skompilować Klasa.java.
D:\>javac -cp bibl.jar Klasa.java
Wygląda na to że się zrobiło, nie dało żadnych błędów. Mam plik Klasa.class. No to teraz test.
D:\>java -cp bibl.jar Klasa
Error: Could not find or load main class Klasa
Jak nie może znaleźć czegoś co jest w tym katalogu???
W katalogu D: mam bibl.jar, Klasa.class, Klasa.java i katalog jlib, a w nim Zegar.class i Zegar.java.
Ale mogę skompilować i uruchomić, używając bibliotek Zegar.class
D:\>javac -cp jlib\* Klasa.java
D:\>java Klasa
Hello, tu klasa
Dzisiaj jest Mon May 05 18:06:54 CEST 2014
zamiana znaczników `` na <code> - furious programming