2012-12-17 6 views
5

Cercando di seguire passo # 4 in this Hibernate tutorial:Come avviare il server HSQLDB come descritto nel tutorial di Hibernate?

mvn exec:java -Dexec.mainClass="org.hsqldb.Server" -Dexec.args="-database.0 file:target/data/tutorial" 

sto ottenendo questo errore:

[INFO] Scanning for projects... 
[INFO] Searching repository for plugin with prefix: 'exec'. 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building First Hibernate Tutorial 
[INFO] task-segment: [exec:java] 
[INFO] ------------------------------------------------------------------------ 
[INFO] Preparing exec:java 
[INFO] No goals needed for project - skipping 
[INFO] [exec:java {execution: default-cli}] 
[WARNING] 
java.lang.ClassNotFoundException: org.hsqldb.Server 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
     at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:285) 
     at java.lang.Thread.run(Thread.java:662) 
[INFO] ------------------------------------------------------------------------ 
[ERROR] BUILD ERROR 
[INFO] ------------------------------------------------------------------------ 
[INFO] An exception occured while executing the Java class. org.hsqldb.Server 

[INFO] ------------------------------------------------------------------------ 
[INFO] For more information, run Maven with the -e switch 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: < 1 second 
[INFO] Finished at: Mon Dec 17 16:35:42 EST 2012 
[INFO] Final Memory: 6M/15M 
[INFO] ------------------------------------------------------------------------ 

Questo nonostante scaricare l'ultimo pacchetto hsqldb e l'installazione per the FAQ. Il file si trova nella hsqldb.jarC:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib e classpath punti env var a questo articolo:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib 

Allora perché sto ricevendo questo ClassNotFoundException: org.hsqldb.Server errore?

Cosa sto sbagliando?

risposta

13

Prima di tutto, CLASSPATH non è generalmente corretto per qualsiasi vaso. Un nome vaso deve essere specificato, ad esempio:

CLASSPATH=C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib\hsqldb.jar 

Secondo, CLASSPATH non è necessario per questo tutorial, in quanto è un progetto Maven. Dovresti aggiungere la dipendenza pertinente al file pom.xml che è descritto nella sezione 1.1.1 del tutorial che menzioni. Basta aggiungere questo blocco a quelli elencati nel pom.xml, all'interno della scheda:

<dependency> 
    <groupId>org.hsqldb</groupId> 
    <artifactId>hsqldb</artifactId> 
    <version>2.2.9</version> 
</dependency> 
+1

Inoltre, ho appena verificato che se il '' è presente in 'pom.xml', non è necessario alcun CLASSPATH nell'ambiente. Interessante come Maven riesca a realizzare ciò. – Withheld

1

Si consiglia di scaricare una nuova copia del tutorial da http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.2.GA/ e provare a crearlo. Se ti mancano dipendendiens come hsqldb o commons-logging e altri ho risolto questo problema aggiungendo il repository del progetto maven - https://repository.jboss.org/nexus/content/repositories/thirdparty-releases. Una volta scaricati tutti gli artefatti, sono riuscito a eseguire il server HSQLDB. Consiglierei di confrontare il tuo progetto attuale con quello appena scaricato. Dovrebbe risolvere il tuo problema.

+0

Grazie +1 anche a te e @gerrytan. – Withheld

2

Secondo http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html, è necessario specificare l'intero percorso che termina con .jar. Se sono presenti più file jar, provare a specificare C: \ path \ to \ hibernate * .jar

Se si specificano solo le directory, vengono caricati solo i file * .class.

Un'altra possibilità è la variabile CLASSPATH impostata solo per una sessione di shell, non globalmente, quindi il comando Maven non lo sta leggendo. Prova a impostarlo tramite le impostazioni di sistema di Windows.

Problemi correlati