2

私はGWTと休止状態から始めています。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 でプロジェクトを実行しようとしましたが、休止状態が機能しません。UI にアカウントを追加しようとすると、「アカウントを保存できませんでした」というアラートが表示され、java.lang.NoClassDefFoundError: org/hibernate/Session.

サンプルコードをEclipseで動作させる方法を教えてください。休止状態に慣れていない多くのユーザーもこれをやりたいと思うでしょう。

ありがとう!

4

1 に答える 1

0

基本的に、Eclipseは休止状態のライブラリを見つけることができません。これは、build.xmlがwarファイルをビルドするためのものであるためです。Eclipseはそれを読み取らないため、ビルド情報は含まれていません。

これに対する簡単な解決策は、Eclipseの[ビルドパス]プロパティに移動し、/libディレクトリが[ライブラリ]タブに含まれていることを確認することです。そうすれば、Eclipseはライブラリをどこに保管しているかを知ることができます。

より良い解決策は、Mavenのようなものを使用することです。次に、Mavenプラグインfor Eclipseは、Mavenビルドファイルを自動的に確認し、ライブラリが保持されている場所などを検出できるようにEclipseプロジェクトを構成します。

于 2012-11-09T02:29:49.370 に答える