PDA

Visualizza la versione completa : [JAVA] Problema col CLASSPATH


smok
27-12-2005, 01:18
Ciao a tutti!
HO reinstallato java dopo molto tempo che non lo usavo con lo scopo di far funzionare LUCENE, una libreria java che serve a fare information retrieval. Ho installato la JDK, impostato la variabile path con la cartella bin del jdk e poi, seguendo le istruzioni che sono su questo sito http://lucene.apache.org/java/docs/demo.html ho impostato il classpath con il percorso indicato in tale tutorial (ora il classpath è: .; C:\Programmi\QuickTime\QTSystem\QTJava.zip; C:\Programmi\lucene-1.4.3\lucene-1.4.3.jar; C:\Programmi\lucene-1.4.3\lucene-demos-1.4.3.jar;).
Quando pero' vado a scrivere,come suggerito, "java org.apache.lucene.demo.IndexFiles C:\programmi\lucene-1.4.3\src", ottengo l'errore exception in thread "main" ... NoClassDefFound org/apache/lucene/demo/IndexFiles ossia è come se avessi impostato male il classpath in quanto non trova la definizione della classe, ma perche'?

Qualcuno per caso ha capito dove sbaglio?
grazie 1000 ciao!

unomichisiada
27-12-2005, 03:17
Originariamente inviato da smok
Ciao a tutti!
HO reinstallato java dopo molto tempo che non lo usavo con lo scopo di far funzionare LUCENE, una libreria java che serve a fare information retrieval. Ho installato la JDK, impostato la variabile path con la cartella bin del jdk e poi, seguendo le istruzioni che sono su questo sito http://lucene.apache.org/java/docs/demo.html ho impostato il classpath con il percorso indicato in tale tutorial (ora il classpath è: .; C:\Programmi\QuickTime\QTSystem\QTJava.zip; C:\Programmi\lucene-1.4.3\lucene-1.4.3.jar; C:\Programmi\lucene-1.4.3\lucene-demos-1.4.3.jar;).
Quando pero' vado a scrivere,come suggerito, "java org.apache.lucene.demo.IndexFiles C:\programmi\lucene-1.4.3\src", ottengo l'errore exception in thread "main" ... NoClassDefFound org/apache/lucene/demo/IndexFiles ossia è come se avessi impostato male il classpath in quanto non trova la definizione della classe, ma perche'?

Qualcuno per caso ha capito dove sbaglio?
grazie 1000 ciao!
Come lo lanci il programma?Come lo imposti il classpath?Dove hai messo il jar? Senza queste info è difficile aiutarti.
Il classpath di un'applicazione jaav si può impostare in vari modi, via paarmetro da riga di comando, via manifest in un jar oppure se lanci il programma con un IDE dalle impostazioni di quest'ultimo. Aspetto tue notizie :ciauz:

smok
27-12-2005, 12:30
ciao!
in windows xp lo ho impostato il classpath con click destro su risorse del computer--> variabili d'ambiente ecc ecc
Sono impostate esattamente come segue:
PATH: C:\Sun\AppServer\bin; C:\Programmi\Java\jdk1.5.0_06\bin;
CLASSPATH: .; C:\Programmi\QuickTime\QTSystem\QTJava.zip; C:\lucene-1.4-final\lucene-1.4-final.jar; C:\lucene-1.4-final\lucene-demos-1.4-final.jar

I files jar sono nella cartella C:\lucene-1.4-final (come si vede nella definizione del CP).
A Questo punto apro CMD, mi porto nella suddetta cartella e scrivo ad esempio:

java -cp lucene-1.4-final.jar; lucene-demos-1.4-final.jar
oppure
java org.apache.lucene.demo.IndexFiles C:\lucene-1.4-final\src
ottenedo il solito errore "Exception in thread main() ecc ecc".

Forse imposto male io il classpath (che se non sbaglio dovrebbe essere impostabile anche con il comando java -cp no?)? Sono disperato devo cominciare un progetto con 'sto cavolo di lucene e ancora non riesco a farlo partire! :(

Grazie ancora per l'aiuto ciao!

smok
27-12-2005, 12:52
ragazzi comunque senza scomodare lucene, credo che il problema sia proprio di come ho installato java. infatti ho scaricato gli esempi del corso Java di html.it e ho unzippatto CiaoMondo.java e CiaoMondo.class sul desktop e se digito "java CiaoMondo.java" mi da' lo stesso errore NoClassDefFound...

Inoltre ho appena scoperto che il PATH era impostato male, ora è = C:\Programmi\Java\jdk1.5.0_06\bin; e basta

Il problema pero' resta: javac CiaoMondo.java funziona, java CiaoMondo.java no...
Dov'e' l'errore? :(

ri-grazie e ri-ciao! :)

unomichisiada
27-12-2005, 13:19
Originariamente inviato da smok
ragazzi comunque senza scomodare lucene, credo che il problema sia proprio di come ho installato java. infatti ho scaricato gli esempi del corso Java di html.it e ho unzippatto CiaoMondo.java e CiaoMondo.class sul desktop e se digito "java CiaoMondo.java" mi da' lo stesso errore NoClassDefFound...

Il problema pero' resta: Dov'e' l'errore? :(

ri-grazie e ri-ciao! :)
Beh qua c'è un errore di fondo: i file .java sono dei file sorgente mi sembra improbabile che tu possa riuscire a far partire l'applicazione eseguendo quelli. Devi prima compilarli. Riferendosi all'esempio CiaoMondo, devi prima compilare con "javac CiaoMondo.java" ottenendo CiaoMondo.class (ma in questo caso non ti serve perchè il .class c'è già nell'archivio), poi devi eseguire il file binario (il .class) digitando java CiaoMondo (bada bene non java CiaoMondo.class).

unomichisiada
27-12-2005, 13:24
Originariamente inviato da smok
ciao!
in windows xp lo ho impostato il classpath con click destro su risorse del computer--> variabili d'ambiente ecc ecc
Sono impostate esattamente come segue:
PATH: C:\Sun\AppServer\bin; C:\Programmi\Java\jdk1.5.0_06\bin;
CLASSPATH: .; C:\Programmi\QuickTime\QTSystem\QTJava.zip; C:\lucene-1.4-final\lucene-1.4-final.jar; C:\lucene-1.4-final\lucene-demos-1.4-final.jar

Il path di windows e la variabile classpath della jvm non sono la stessa cosa (anche se grossomodo coincidono) sotto win. Per impostare la variabile classpath della jvm devi agire sulla system property java.class.path oppure lanciare l'applicazione col parametro -cp (o -classpath)



Originariamente inviato da smok
I files jar sono nella cartella C:\lucene-1.4-final (come si vede nella definizione del CP).
A Questo punto apro CMD, mi porto nella suddetta cartella e scrivo ad esempio:

java -cp lucene-1.4-final.jar; lucene-demos-1.4-final.jar
oppure
java org.apache.lucene.demo.IndexFiles C:\lucene-1.4-final\src
ottenedo il solito errore "Exception in thread main() ecc ecc".

Forse imposto male io il classpath (che se non sbaglio dovrebbe essere impostabile anche con il comando java -cp no?)? Sono disperato devo cominciare un progetto con 'sto cavolo di lucene e ancora non riesco a farlo partire! :(

Grazie ancora per l'aiuto ciao!
prova con


java -cp lucene-1.4-final.jar; -jar lucene-demos-1.4-final.jar

smok
27-12-2005, 13:35
ciao di nuovo!
Allora per CiaoMondo ora funziona (io mettevo, dopo aver compilato, java CiaoMondo.java)

Invece tornando al dannato Lucene, se metto il codice che hai suggerito ottengo questo errore:

Failed to load Main-Class manifest attribute from lucene-demos-1.4-final.jar

che balls!



prova con


java -cp lucene-1.4-final.jar; -jar lucene-demos-1.4-final.jar

unomichisiada
27-12-2005, 13:40
Originariamente inviato da smok
ciao di nuovo!
Allora per CiaoMondo ora funziona (io mettevo, dopo aver compilato, java CiaoMondo.java)

Invece tornando al dannato Lucene, se metto il codice che hai suggerito ottengo questo errore:

Failed to load Main-Class manifest attribute from lucene-demos-1.4-final.jar

che balls!
L'errore significa che nel manifest del jar lucene-demos-1.4-final.jar non è presente un attributo che indica alla jvm qual'è la classe con il metodo main, in sostanza quel jar non è eseguibile. Allora devi trovare qual'è il jar per lanciare gli esempi e poi ne riparliamo. Prova ad aprire i jar che hai con un archiviatore (anche winzip) e visualizza il file manifest nella cartella META-INF, devi dirmi se in uno di quelli c'è un attributo Main-Class: ....

smok
27-12-2005, 17:14
Ciao! Intanto una parentesi per ringraziarti della pazienza che hai! :)

TOrnando a lucene, il file manifest.mf di lucene-demos-1.4-final.jar ha al suo interno questo:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.1
Created-By: 1.4.2_04-b05 (Sun Microsystems Inc.)

mentre quello per lucene-1.4-final.jar:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.1
Created-By: Apache Jakarta

Name: org/apache/lucene
Specification-Title: Lucene Search Engine
Specification-Version: 1.4-final
Specification-Vendor: Lucene
Implementation-Title: org.apache.lucene
Implementation-Version: build 2004-07-01 10:45:57
Implementation-Vemdpr: Lucene

quindi mi sembra che siano poco eloquenti no? :(

smok
27-12-2005, 17:34
Scusate ancora.. tanto per conoscenza, vi dico quello che ho fatto di preciso, magari provando ad emulare le mie "gesta" potreste dirmi se a voi funziona o meno...(?)

Ho scaricato questo file: http://mirror.nohup.it/apache/jakarta/lucene/binaries/lucene-1.4-final.zip
(1.6 mb) scompattato in c:\lucene-1.4-final e poi ho provato a seguire i rimantenti passi di questa guida all'installazione e al test(in inglese):



Binary installation
To obtain the binary distribution of Lucene, follow these steps:
1 Download the latest binary Lucene release from the download area of the
Jakarta web site: http://jakarta.apache.org. At the time of this writing, the
latest version is 1.4.2; the subsequent steps assume this version. Download
either the .zip or .tar.gz file, whichever format is most convenient
for your environment.
2 Extract the binary file to the directory of your choice on your file system.
The archive contains a top-level directory named lucene-1.4.2, so it’s safe
to extract to c:\ on Windows or your home directory on UNIX. On Windows,
if you have WinZip handy, use it to open the .zip file and extract its contents
to c:\. If you’re on UNIX or using cygwin on Windows, unzip and untar (tar
zxvf lucene-1.4.2.tar.gz) the .tar.gz file in your home directory.
3 Under the created lucene-1.4.2 directory, you’ll find lucene-1.4.2.jar.
This is the only file required to introduce Lucene into your applications.
How you incorporate Lucene’s JAR file into your application depends on
your environment; there are numerous options. We recommend using
Ant to build your application’s code. Be sure your code is compiled
against the Lucene JAR using the classpath options of the <javac> task.
4 Include Lucene’s JAR file in your application’s distribution appropriately.
For example, a web application using Lucene would include lucene-
1.4.2.jar in the WEB-INF/lib directory. For command-line applications, be
sure Lucene is on the classpath when launching the JVM.
The binary distribution includes a substantial amount of documentation, including
Javadocs. The root of the documentation is docs/index.html, which you can
open in a web browser. Lucene’s distribution also ships two demonstration applications.
We apologize in advance for the crude state of these demos—they lack
Running the command-line demo 389
polish when it comes to ease of use—but the documentation (found in docs/
demo.html) describes how to use them step by step; we also cover the basics of
running them here.
A.2 Running the command-line demo
The command-line Lucene demo consists of two command-line programs: one
that indexes a directory tree of files and another that provides a simple search
interface. To run this demo, set your current working directory to the directory
where the binary distribution was expanded. Next, run the IndexFiles program
like this:
java -cp lucene-1.4.2.jar;lucene-demos-1.4.2.jar
➾ org.apache.lucene.demo.IndexFiles docs
.
.
.
adding docs/queryparsersyntax.html
adding docs/resources.html
adding docs/systemproperties.html
adding docs/whoweare.html
9454 total milliseconds
This command indexes the entire docs directory tree (339 files in our case) into
an index stored in the index subdirectory of the location where you executed
the command.
NOTE Literally every file in the docs directory tree is indexed, including .gif
and .jpg files. None of the files are parsed; instead, each file is indexed
by streaming its bytes into StandardAnalyzer.
To search the index just created, execute SearchFiles in this manner:
java -cp lucene-1.4.2.jar;lucene-demos-1.4.2.jar
org.apache.lucene.demo.SearchFiles
Query: IndexSearcher AND QueryParser
Searching for: +indexsearcher +queryparser
10 total matching documents
0. docs/api/index-all.html
1. docs/api/allclasses-frame.html
2. docs/api/allclasses-noframe.html
3. docs/api/org/apache/lucene/search/class-use/Query.html
4. docs/api/overview-summary.html
5. docs/api/overview-tree.html
6. docs/demo2.html
390 APPENDIX A
Installing Lucene
7. docs/demo4.html
8. docs/api/org/apache/lucene/search/package-summary.html
9. docs/api/org/apache/lucene/search/package-tree.html
SearchFiles prompts interactively with Query:. QueryParser is used with Standard-
Analyzer to create a Query. A maximum of 10 hits are shown at a time; if there are
more, you can page through them. Press Ctrl-C to exit the program.

Loading