Domanda

    

Questa domanda ha già una risposta qui:

    
            
  •              Come importare un vaso in Eclipse                                      7 risposte                          
  •     
    

Uso Eclipse (3.4) e la mia classe viene compilata senza preavviso o errori. Il mio progetto utilizza un file jar esterno.

Dove devo inserire questo file jar esterno per non ottenere un java.lang.NoClassDefFoundError quando uso questa classe da un altro progetto (non in Eclipse)?

Potrei semplicemente estrarre il vaso nella cartella del progetto, ma non mi sembra giusto.

Modifica: questa domanda non riguarda l'importazione di vasetti in Eclipse, ma il loro utilizzo al di fuori di Eclipse.

È stato utile?

Soluzione

Se vuoi includere un file JAR nel tuo progetto Eclipse, generalmente creeresti una cartella 'lib' all'interno della cartella del progetto e inserirai il file. È quindi necessario dire a eclipse di includerlo nel percorso della classe in modo che il codice venga compilato ed eseguito all'interno di eclipse.
Per fare ciò:
- Entra nelle proprietà del tuo progetto
- Seleziona "Percorso build Java" nella colonna di sinistra
- Seleziona la scheda "Librerie" nella parte centrale della finestra
- Fai clic sul pulsante Aggiungi JAR - questo ti darà un elenco dei tuoi progetti in Eclipse - Espandi il tuo progetto e nella cartella lib - Il tuo vaso sarà lì.
- Seleziona il JAR, fai clic su OK e di nuovo OK fuori dalla finestra delle proprietà.

Il codice verrà ora compilato ed eseguito.

Altri suggerimenti

mettilo nella tua cartella jre / lib / ext

tutto ciò che è stato detto sul percorso di classe è vero, ma questo è un posto coerente e ragionevole in cui vivere.

puoi scoprire la tua cartella jre guardando la variabile d'ambiente JAVA_HOME su Windows.

Non importa troppo dove lo metti, ma devi configurare l'altro tuo progetto non Eclipse per mettere i barattoli esterni nel suo percorso di classe - o usare il meccanismo della directory delle estensioni, se necessario. (È più facile, ma renderlo esplicito è probabilmente migliore.)

La risposta di Simon sembra essere la migliore ma un po 'obsoleta ora. Ho cercato su Google questo documento Oracle Estensioni installate .

  

A partire da Java 6, i file JAR di estensione possono anche essere collocati in una posizione indipendente da qualsiasi JRE particolare, in modo che le estensioni possano essere condivise da tutti i JRE installati su un sistema.

Dice che per Windows dovresti inserire qui le tue estensioni% SystemRoot% \ Sun \ Java \ lib \ ext.

Devi solo fare riferimento ad essa usando un'opzione -classpath , in una cartella che non è inclusa in uno spazio di lavoro eclipse, cioè che non dipende affatto da eclipse.

Attenzione, non puoi eseguire il tuo altro progetto con java -jar se fai riferimento al tuo vaso esterno con l'opzione -cp ( vedi questa domanda )

Lo inserisco in una nuova cartella. Questa cartella deve essere inclusa nel percorso di compilazione. Non importa se si trova in Eclipse o all'esterno. Eclipse ha un percorso di compilazione specifico del progetto e passa questo percorso a javac. Se si desidera eseguire javac al di fuori di Eclipse, è necessario passare manualmente il percorso di generazione.

So che non è esattamente quello che stai chiedendo, ma hai preso in considerazione l'utilizzo di Maven? Alcuni plugin come assembly potrebbero essere utili in situazioni come queste.

Avere un barattolo dentro Eclipse, come ha scritto James Camfield.

Quindi quando compilate (Ant, Maven, manualmente) per la distribuzione, assicuratevi che il file jar sia incluso con o all'interno del vostro jar dell'applicazione o war o ear o qualunque altro file e che qualsiasi script di avvio lo includa sul percorso di classe usando il - opzione della riga di comando classpath per java, come ha scritto VonC.

Non preoccuparti di attaccare i vasetti nella cartella delle estensioni java, tutto ciò che farà è farti dimenticare quando si tratta di inviare il tuo codice a una terza parte da usare, perché non lo configureranno alla fine.

Crea una directory lib condivisa e posiziona questo jar e qualsiasi altro file jars comune che potresti avere lì. Se stai usando Maven, lo hai già sotto forma di repository locale.

In Eclipse, crea una variabile classpath per questa directory e poi usala come riferimento al tuo file jar nei tuoi progetti. Se hai più progetti che soddisfano queste condizioni, renderai la vita molto più semplice. Inoltre semplifica la modifica della posizione della directory principale se si passa da un'unità locale a una di rete.

Nell'app esterna, includerai anche questo file jar dalla sua posizione condivisa sul percorso di classe delle app.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top