我开始使用GWT和hibernate。我正在浏览https://developers.google.com/web-toolkit/articles/using_gwt_with_hibernate上的教程。
我下载了教程提供的示例代码(http://google-web-toolkit.googlecode.com/files/gwt_hibernate_base.zip)。这是一个简单的音乐商店,您可以在其中添加帐户和记录。我可以运行它并通过执行以下命令成功地将帐户和记录添加到数据库中:
(in the data directory) java -cp ../lib/hsqldb.jar org.hsqldb.Server
ant build hosted
以下是用于构建此文件的build.xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<project name="Guestbook" default="build" basedir=".">
<!-- Define gwt.home, gwt.dev.jar, appengine.sdk.home -->
<property file="build.properties"/>
<path id="project.class.path">
<pathelement location="war/WEB-INF/classes"/>
<pathelement location="${gwt.home}/gwt-user.jar"/>
<!-- Add any additional non-server libs (such as JUnit) -->
<fileset dir="war/WEB-INF/lib">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="libs" description="Copy libs to WEB-INF/lib">
<mkdir dir="war/WEB-INF/lib" />
<copy todir="war/WEB-INF/lib" file="${gwt.home}/gwt-servlet.jar" />
<!-- Add any additional server libs that need to be copied -->
<copy todir="war/WEB-INF/lib" flatten="true">
<fileset dir="lib/">
<include name="**/*.jar"/>
</fileset>
</copy>
</target>
<target name="javac" depends="libs" description="Compile java source">
<mkdir dir="war/WEB-INF/classes"/>
<javac srcdir="src" includes="**" encoding="utf-8"
destdir="war/WEB-INF/classes"
source="1.5" target="1.5" nowarn="true"
debug="true" debuglevel="lines,vars,source">
<classpath refid="project.class.path"/>
</javac>
</target>
<!-- 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.google.musicstore.MusicStore"/>
</java>
</target>
<target name="hosted" depends="javac" description="Run hosted mode">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.DevMode">
<classpath>
<pathelement location="src"/>
<path refid="project.class.path"/>
<pathelement location="${gwt.home}/${gwt.dev.jar}"/>
</classpath>
<jvmarg value="-Xmx256M"/>
<arg value="-startupUrl"/>
<arg value="MusicStore.html"/>
<arg value="com.google.musicstore.MusicStore"/>
<!-- Additional arguments like -style PRETTY or -logLevel DEBUG -->
</java>
</target>
<target name="build" depends="gwtc" description="Build this project" />
<target name="clean" description="Cleans this project">
<delete dir="war/WEB-INF/classes" failonerror="false" />
<delete dir="war/musicstore" failonerror="false" />
</target>
现在我想让这个简单的例子在eclipse中运行。我使用gwt eclipse插件创建了一个名为MusicStore的项目。然后我复制了教程文件而不更改它们。我无法发布图片,但这里是我的eclipse项目结构的链接:
http://oi50.tinypic.com/t6rn2w.jpg
再次,我开始运行
(in the data directory) java -cp ../lib/hsqldb.jar org.hsqldb.Server
然后我尝试在eclipse中运行我的项目但是hibernate不起作用。当我尝试在用户界面中添加一个帐户时,它会提醒&#34;无法保存帐户&#34;我得到错误java.lang.NoClassDefFoundError:org / hibernate / Session。
请告诉我如何使用eclipse获取示例代码。我认为许多刚接触hibernate的用户也希望这样做。
谢谢!
答案 0 :(得分:0)
基本上eclipse找不到你的hibernate库。那是因为你的build.xml用于构建war文件。 Eclipse没有读取它,因此它没有任何构建信息。
快速解决此问题的方法是转到Eclipse中的“构建路径”属性,并确保/ lib目录包含在“库”选项卡中。然后eclipse会知道你在哪里保存你的库。
更好的解决方案是使用像Maven这样的东西。然后,Eclipse的Maven插件将自动查看Maven构建文件并配置Eclipse项目,以便它可以检测库的位置等...