2012-12-17 2 views
5

Der Versuch, Schritt # 4 in this Hibernate tutorial zu folgen:Wie startet man den HSQLDB-Server wie im Hibernate Tutorial beschrieben?

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

Ich erhalte diese Fehlermeldung:

[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] ------------------------------------------------------------------------ 

Dies ist trotz dem Herunterladen der neuesten hsqldb Paket und die Installation es pro the FAQ. Die hsqldb.jar Datei wird es in C:\hsqldb-2.2.9\hsqldb-2.2.9\hsqldb\lib und die Classpath env var Punkte zu finden:

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

Warum erhalte ich diese ClassNotFoundException: org.hsqldb.Server Fehler entdeckt?

Was mache ich falsch?

Antwort

13

Zunächst einmal ist Ihr CLASSPATH im Allgemeinen für kein Glas korrekt. Ein Glas Name muss beispielsweise angegeben werden:

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

Zweitens CLASSPATH ist für dieses Tutorial nicht notwendig, da es sich um ein Maven-Projekt ist. Sie sollten die entsprechende Abhängigkeit zur Datei pom.xml hinzufügen, die in Abschnitt 1.1.1 des von Ihnen erwähnten Lernprogramms beschrieben wird. Fügen Sie einfach diesen Block zu den in der pom.xml in der Registerkarte aufgeführten hinzu:

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

Auch habe ich gerade verifiziert, dass, wenn die '' ist da in der 'pom.xml', kein CLASSPATH in der Umgebung notwendig ist. Interessant, wie Maven das schafft. – Withheld

1

Ich würde empfehlen, eine neue Kopie des Tutorials von http://sourceforge.net/projects/hibernate/files/hibernate3/3.3.2.GA/ herunterladen und versuchen, es zu bauen. Wenn Sie Abhängige wie hsqldb oder commons-logging und andere vermissen werden, habe ich dieses Problem gelöst, indem Sie maven Projekt-Repository hinzufügen - https://repository.jboss.org/nexus/content/repositories/thirdparty-releases. Sobald alle Artefakte heruntergeladen wurden, konnte ich den HSQLDB-Server ausführen. Ich würde empfehlen, Ihr aktuelles Projekt mit einem frisch heruntergeladenen zu vergleichen. Es sollte dein Problem lösen.

+0

Dank +1 an Sie und @gerrytan zu. – Withheld

2

Gemäß http://docs.oracle.com/javase/7/docs/technotes/tools/windows/classpath.html müssen Sie den gesamten Pfad angeben, der mit .jar endet. Wenn mehrere JAR-Dateien vorhanden sind, versuchen Sie möglicherweise C: \ Pfad \ zu \ Hibernate * .jar

Wenn Sie nur Verzeichnisse angeben, werden nur * .class-Dateien geladen.

Andere Möglichkeit ist die CLASSPATH-Variable, die Sie nur für eine Shell-Sitzung gültig, nicht global - daher liest der Maven-Befehl es nicht. Versuchen Sie es über die Windows-Systemeinstellungen.

Verwandte Themen