# GWT und Hibernate - gwt.dev.Compler not found



## Fabulus (24. Jan 2012)

Moin,

ich hab hier ein Beispielprojekt von dieser Seite. Will das Projekt nachbauen, habe dazu die Libs, Verzeichnisse und Quelldateien erstellt und die Pfade jeweils geändert.

In der build.properties-Datei habe ich den Pfad von gwt.home auch angepasst, dass er genau in das Verzeichnis zeigt, in dem die gwt-servlet.jar-Datei liegt.

Habe auch GWT 2.4.0 eingebunden (einmal manuell als external JARs und einmal als GWT Library), aber beim Ausführen des Ant-Skripts kommt folgender Fehler:


```
[code=Java] Fehler: Hauptklasse com.google.gwt.dev.Compiler konnte nicht gefunden oder geladen werden
```

Und der build bricht ab. (Fehler liegt in Zeile 39 der build.xml)

Das build-target sieht so aus:

```
<!-- can add additional arguments like -logLevel INFO or -style PRETTY -->
  <target name="gwtc" depends="javac" description="GWT compile to JavaScript">
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
      <classpath>
        <pathelement location="src"/>
        <path refid="project.class.path"/>
        <pathelement location="${gwt.home}/${gwt.dev.jar}"/>
      </classpath>
      <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError -->
      <jvmarg value="-Xmx256M"/>
      <arg value="com.lumbeck.simplemaps.MusicStore"/>
    </java>
  </target>
```


Der Quellcode kann hier geladen werden, das ist der Quellcode von Google. Ich denke aber, dass es eher an GWT liegt.


Kann jmd helfen?


----------



## Fabulus (30. Jan 2012)

Hat keiner einen Vorschlag oder das Selbe Problem gehabt?
Neuinstallation von GWT und Eclipse hat übrigens auch nichts gebracht.


----------



## Fabulus (31. Jan 2012)

Achja, die Variablen gwt.home und gwt.dev.jar sind folgendermaßen:

```
# Extracted GWT distribution location
gwt.home=C:/eclipse/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201201120043-rel-r37/gwt-2.4.0

# Platform-specific GWT Dev JAR
gwt.dev.jar=gwt-dev-windows.jar
```

Das ist genau der Pfad zum gwt-2.4.0 Ordner, wie er sein sollte.


----------



## Fabulus (7. Feb 2012)

Obiges Problem ist erst einmal zurückgeschoben worden, da ich es momentan mit dem GWT-Plugin von Eclipse kompiliere.

Dennoch habe ich jetzt ein weiteres Problem.
Habe das Projekt kompiliert, den Inhalt des war-Verzeichnisses in einen Tomcat-webapps Unterorder verschoben. 
Das Anzeigen der Seite funktioniert soweit, jedoch aber nicht der DB-Zugriff. Sobald der Datenbankzugriff erfolgen sollte, erscheint in Eclipse (hierüber läuft der Tomcat-Server) die Meldung:

```
1001 [http-bio-8080-exec-6] ERROR org.hibernate.connection.DriverManagerConnectionProvider - JDBC Driver class not found: org.hsqldb.jdbcDriver
java.lang.ClassNotFoundException: org.hsqldb.jdbcDriver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:186)
	at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:123)
	at org.hibernate.connection.DriverManagerConnectionProvider.configure(DriverManagerConnectionProvider.java:84)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:137)
	at org.hibernate.connection.ConnectionProviderFactory.newConnectionProvider(ConnectionProviderFactory.java:79)
	at org.hibernate.cfg.SettingsFactory.createConnectionProvider(SettingsFactory.java:448)
	at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:89)
	at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2101)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1325)
	at com.google.musicstore.util.HibernateUtil.<clinit>(HibernateUtil.java:13)
	at com.google.musicstore.server.MusicStoreServiceImpl.getAllAccountRecords(MusicStoreServiceImpl.java:88)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)
```

Meine eingebundenen Bibliotheken sind genau die, die im lib-Verzeichnis stehen (habe das Projekt oben heruntergeladen und in Eclipse importiert), also auch die hsqldb.jar-Datei.

Die hibernate.cfg.xml-Datei sieht so aus:

```
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
        <property name="connection.url">jdbc:hsqldb:hsql://localhost/test</property>
        <property name="connection.username">root</property>
        <property name="connection.password">(PW)</property>

        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>

        <!-- Disable the second-level cache  -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">create</property>

        <mapping resource="com/google/musicstore/domain/Record.hbm.xml"/>
        <mapping resource="com/google/musicstore/domain/Account.hbm.xml"/>

    </session-factory>

</hibernate-configuration>
```

Eine weitere Frage ist, was ich genau bei der Connection-URL eintragen muss?
Ich habe eine Datenbank auf dem localhost (mit XAMPP), die den Namen "test" hat. Ist der Aufruf also richtig?

Vielleicht kann mir jetzt jemand helfen...


----------

