Kompilacja w terminalu, dodanie sciezki do biblioteki

0

Siema,

korzystam z dodatkowej biblioteki htmlparser.jar i w pliku mam taki import
import org.htmlparser.beans.LinkBean;

Podczas kompilacji w terminalu wyskakuje mi, ze nie ma takiej biblioteki. Jak dodac sciezke do tego jara, zebym mogl skompilowac w terminalu klase?

0

javac -cp lista_potrzebnych_katalogów_oddzielonych_średnikami nazwa_klasy

0
bo napisał(a)

javac -cp lista_potrzebnych_katalogów_oddzielonych_średnikami nazwa_klasy

to dziala, dzieki!

teraz jak wlaczam server to wszystko dziala, dopiero jak client probuje sie do niego podlaczyc to dostaje taki blad:

Exception in thread "Thread-1" java.lang.NoClassDefFoundError: org/htmlparser/beans/LinkBean
	at URLEnumerationTask.enumerate(CrawlerImpl.java:122)
	at URLEnumerationTask.run(CrawlerImpl.java:101)
	at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.ClassNotFoundException: org.htmlparser.beans.LinkBean
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	... 3 more
 

cos zle uruchamiam, czy to blad w kodzie zrobiony przeze mnie?

0

A uruchamiasz tak:
java -cp lista_potrzebnych_katalogów_oddzielonych_średnikami nazwa_klasy?

0
bo napisał(a)

A uruchamiasz tak:
java -cp lista_potrzebnych_katalogów_oddzielonych_średnikami nazwa_klasy?

jak uruchamiam tak jak napisales, to dostaje cos takiego:

wojtek@wojtek-MS-7395:~/RMI/server$ java -cp htmlparser.jar CrawlerServer
Exception in thread "main" java.lang.NoClassDefFoundError: CrawlerServer
Caused by: java.lang.ClassNotFoundException: CrawlerServer.class
	at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: CrawlerServer.class. Program will exit.
 

to pewnie proste do rozwiazania, ale nigdy tego nie robilem

0

Jeżeli CrawlerServer jest w bieżącyn katalogu, to musisz bieżący katalog dodać do CLASSPATH.
java -cp htmlparser.jar;. CrawlerServer

0

ale to jest poryte ;/

wojtek@wojtek-MS-7395:~/RMI/server$ java -cp htmlparser.jar;. CrawlerServer
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
    -d64	  use a 64-bit data model if available
    -client	  to select the "client" VM
    -server	  to select the "server" VM
    -jamvm	  to select the "jamvm" VM
    -cacao	  to select the "cacao" VM
    -zero	  to select the "zero" VM
    -hotspot	  is a synonym for the "client" VM  [deprecated]
    -shark	  is a synonym for the "zero" VM  [deprecated]
                  The default VM is server,
                  because you are running on a server-class machine.


    -cp <class search path of directories and zip/jar files>
    -classpath <class search path of directories and zip/jar files>
                  A : separated list of directories, JAR archives,
                  and ZIP archives to search for class files.
    -D<name>=<value>
                  set a system property
    -verbose[:class|gc|jni]
                  enable verbose output
    -version      print product version and exit
    -version:<value>
                  require the specified version to run
    -showversion  print product version and continue
    -jre-restrict-search | -jre-no-restrict-search
                  include/exclude user private JREs in the version search
    -? -help      print this help message
    -X            print help on non-standard options
    -ea[:<packagename>...|:<classname>]
    -enableassertions[:<packagename>...|:<classname>]
                  enable assertions with specified granularity
    -da[:<packagename>...|:<classname>]
    -disableassertions[:<packagename>...|:<classname>]
                  disable assertions with specified granularity
    -esa | -enablesystemassertions
                  enable system assertions
    -dsa | -disablesystemassertions
                  disable system assertions
    -agentlib:<libname>[=<options>]
                  load native agent library <libname>, e.g. -agentlib:hprof
                  see also, -agentlib:jdwp=help and -agentlib:hprof=help
    -agentpath:<pathname>[=<options>]
                  load native agent library by full pathname
    -javaagent:<jarpath>[=<options>]
                  load Java programming language agent, see java.lang.instrument
    -splash:<imagepath>
                  show splash screen with specified image
See http://java.sun.com/javase/reference for more details.
bash: CrawlerServer: Nie ma takiego pliku ani katalogu
 
0

A jest ten plik?

0

jasne, chwile wczesniej go skompilowalem

0

Z tego, że kompilowałeś, i kompilacja przebiegła pomyślnie, nie wynika, że plik znalazł się w tym katalogu. Wpisz polecenie ls.

0

dodalem zalacznik zawierajacy zrzut ekranu

ed. dorzucilem archiwum z kodem

najpierw trzeba odpalic NanoHTTPD z folderu download, pozniej z katalogu server rmiregistry, pozniej CrawlerServer i Clienta na koniec

0

Posłużę się ulubionym zwrotem programistów: u mnie działa. W najprostszej wersji java CrawlerServer, ale ja mam kiepski so (windows xp).
Kluczowa jest pewnie zmienna środowiskowa CLASSPATH, u mnie CLASSPATH=.

0

a odpalales to pod winda w konsoli czy w jakims srodowisku? i nawet jak wystartowales klienta, to sie nie wysypalo?

na win7 dodalem do komputer/wlasciwosci/zaawansowane ustawienia systemu/zmienne srodowiskowe/zmienne systemowe i do wiersza Path sciezke do htmlparser.jar, startuje rmiregistry z folderu server i gdy probuje odpalic server to dostaje:

C:\RMI\server>java CrawlerServer
Constructing server implementation...
Binding server implementation to registry...
Exception in thread "main" javax.naming.ServiceUnavailableException [Root except
ion is java.rmi.ConnectException: Connection refused to host: 192.168.1.102; nes
ted exception is:
        java.net.ConnectException: Connection timed out: connect]
        at com.sun.jndi.rmi.registry.RegistryContext.bind(Unknown Source)
        at com.sun.jndi.toolkit.url.GenericURLContext.bind(Unknown Source)
        at javax.naming.InitialContext.bind(Unknown Source)
        at CrawlerServer.main(CrawlerServer.java:22)
Caused by: java.rmi.ConnectException: Connection refused to host: 192.168.1.102;
 nested exception is:
        java.net.ConnectException: Connection timed out: connect
        at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
        at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
        at sun.rmi.server.UnicastRef.newCall(Unknown Source)
        at sun.rmi.registry.RegistryImpl_Stub.bind(Unknown Source)
        ... 4 more
Caused by: java.net.ConnectException: Connection timed out: connect
        at java.net.DualStackPlainSocketImpl.connect0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(Unknown S
ource)
        at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(Unknown S
ource)
        ... 9 more
0

Odpalałem w konsoli, klient mnie odpytał o adres strony, słowo kluczowe i głębokość szukania.

0

a podales je? bo ja jak wystartowalem pod linuxem ze zwyklego java CrawlerServer i podalem te dane(prawdziwe), to dopiero po tym sie server sypnal, bo probowal skorzystac z tej dodatkowej biblioteki

0

''Podaj adres strony: http://www.onet.pl/
Podaj slowo kluczowe: Komu
Podaj glebokosc szukania: 1
RMI registry bindings:
central_crawler''
Nie sypnął się, nie wiem jak powinien odpowiedzieć.

0

a nie wypisal ci nic do konsoli servera? powinien zwrocic liczbe wystapien tego slowa

0

Za dużo otwartych konsoli i nie zauważyłem błędu. Jest błąd NoClassDefFoundError: org/htmlparser/util/Parser Exception. Nie wiem co można na to poradzić, w pliku htmlparser.jar nie ma tej klasy.

0

dziala, dziala, dziala!! :D

po pierwsze bardzo dzieki za poswiecony czas, bez ciebie nie udaloby mi sie :)

po drugie: wyrzucalo ten blad, bo tej klasy brakowalo, nie dolaczylem kolejnej biblioteki, bo tak na prawde myslalem ze nie jest potrzeba, a jednak zawierala to, co bylo potrzebne.

po trzecie: uruchomilem to na linuxie komenda java -cp htmlparser.jar:(dwukropek, a nie srednik - dlatego nie dzialalo) teraz reszta tych jarow:. CrawlerServer

co dziwne, jesli mialem jakis blad na serverze to musialem restartowac rmiregistry, ale dziala i to najwazniejsze. Poszlo na linuxie bo Winda sie rzucala :)

Pozdrawiam i jeszcze raz dzieki:)

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