Problem z dodaniem Classpath

0

Poczytałem trochę na necie i wydaje mi się że robię identycznie jak piszą a wikipedii a jednak wywala mi błąd z parametrami.

Otóż korzystałem cały czas z NetBeansa i ścieżkę dodałem z plikiem jar w projekcie. Jednak teraz chcę skompilować ten projekt na innej maszynie i chcę dodać do ścieżki całe archiwum jar - zbiór bibliotek.

więc piszę:

java -classpath /home/praca/loader;/home/praca/loader/lib/commons-net-20070724.jar

wyskakuje standard czyli:

Usage: java [-options] class [args...]
(to execute a class)
or java [-options] -jar jarfile [args...]
(to execute a jar file)

where options include:
-d32 use a 32-bit data model if available
(...)
-javaagent:<jarpath>[=<options>]
load Java programming language agent, see java.lang.instrument
-splash:<imagepath>
show splash screen with specified image
invalid file (bad magic number): Exec format error

Dzięki za pomoc bo już trochę się z tym czymś męczę.

0

nie podales w ogóle sciezki do pliku java, który chcesz uruchomić

0

Zrobiłem tak:
java -classpath /media/sda3/Programowanie/Java/Aplety/Loader/lib/commons-net-20070724.jar/org/apache/commons/net/ftp/FTPClient

oraz tak:

java -classpath /media/sda3/Programowanie/Java/Aplety/Loader/lib/commons-net-20070724.jar/org/[...]mmons/net/ftp/FTPClient.class

oraz tak

/media/sda3/Programowanie/Java/Aplety/JasperLoader$ java -classpath /media/sda3/Programowanie/Java/Aplety/Loader/lib/FTPClient

oraz tak

/media/sda3/Programowanie/Java/Aplety/JasperLoader$ java -classpath /media/sda3/Programowanie/Java/Aplety/Loader/lib/FTPClient.class

Dwie ostatnie metody dotyczą sytuacji jak wypakowałem ten plik z archiwum jar i wkleiłem w odpowiednie miejsce.

Już nie mam pomysłu co ja robię źle. :(

Czy można dodać import z plikiem klasy bezpośrednio, bo zrobiłem tak import "FTPClient"; i wywalił błędy :(

Proszę o pomoc :)

Dziękuje

0

Kam683 napisał ci co robisz źle - nie podajesz głównej klasy , jest wiele sposobów uruchamiania JRE:
jeżeli nie trzeba zmieniać classpath i klasy leżą luzem

java nazwa_głównej_klasy

jeżeli nie trzeba zmieniać classpath i klasy są zapakowane do jara

java -jar nazwa_pliku_jar

jeżeli trzeba zmienić classpath i klasy leżą luzem

java -cp lista_katalogów nazwa_głównej_klasy

jeżeli trzeba zmienić classpath i klasy są zapakowane do jara

java -cp ista_katalogów -jar nazwa_pliku_jar
0

Generalnie chodzi o to abym mógł skorzystać z klasy FTPClient w moim programie. Może moim postępowaniem trochę zamieszałem. Wiem jak uruchomić już "gotowy" program .class ale ja nie potrafię skompilować źródła w którym używam instancji klasy FTPClient.

Do tej pory używałem IDE jednak teraz mogę skorzystać jedynie z javac. Wcześniej dodałem do lib mój plik .jar w ustawieniach projektu. Teraz próbuje skompilować ten sam program bez ide.

Dzięki za cierpliwość :)

0

Do kompilacji służy polecenie javac

javac -cp lista_katalogow_i_plikow_jar nazwa_klasy
0

To może inaczej:P
Wiem jak kompilować za pomocą javac:

To może ktoś mi napiszę całkowie polecenie abym mógł skorzystać ze zbioru bibliotek.

Plik źródłowy który chcę skompilować nazywa się JasperImagesUploader.java a plik jar który zawiera plik .class nazywa się commons-net-20070724.jar. Plik z którego chcę skorzystać nazywa się: FTPClient.class i jest w archiwum jar pod ścieżką: (...).jar -> /org/apache/commons/net/ftp/FTPClient.class

Więc wpisuje do konsoli tak:

java -cp commons-net-20070724.jar JasperImagesUploader.java
Exception in thread "main" java.lang.NoClassDefFoundError: JasperImagesUploader/java
Caused by: java.lang.ClassNotFoundException: JasperImagesUploader.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
[email protected]:/media/sda3/Programowanie/Java/Aplety/JasperLoader/kompiluje$

To jest tylko jeden przykład z wielu kombinajci jakie dokonałem :(

0

Pewnie też się da wkleić ten plik jar w pewne miejsce w systemie aby Java widziała go tak jak "standardowe pakiety".

0

To co wpisujesz na konsoli

java -cp commons-net-20070724.jar JasperImagesUploader.java

to nie jest polecenie kompilacji, to jest uruchomienie JRE, klasą główną jest klasa o nazwie java z pakietu JasperImagesUploader
P.S. mam nieodparte wrażenie, że nie odróżniasz poleceń java i javac. </b>

0

Tak javac pomyliłem się to wynikło z pośpiechu...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0