EclipseでGWTプロジェクトを取得しましたが、それ以外の場合は機能します。ここで、サーバー上で実行されるスクリプトが必要です。このスクリプトは、ソース管理から最新バージョンを取得し、サーバー上でコンパイルして展開します。これにより、多くの手作業が節約され、帯域幅が制限された接続時に新しいバージョンを展開できるようになります(アプリケーションをサーバーにアップロードする必要がないため)。
最新バージョンのソースコードをプルした後、スクリプトは次のコマンドを使用してコードをコンパイルしようとします。
java -cp "/path/eclipse/plugins/com.google.gwt.eclipse.sdkbundle_2.5.0.v201211121240-rel-r42/gwt-2.5.0/*:/path/company/projects/pull-compile-deploy/X/X/src:/path/company/projects/pull-compile-deploy/X/X/war/WEB-INF/lib/*" com.google.gwt.dev.Compiler nl.company.projects.X
Compiling module nl.company.projects.X
Finding entry point classes
[ERROR] Unable to find type 'nl.company.projects.X.client.XMain'
[ERROR] Hint: Previous compiler errors may have made this type unavailable
[ERROR] Hint: Check the inheritance chain from your module; it may not be inheriting a required module or a module may not be adding its source path entries properly
すべてのソースコードがに/path/company/projects/pull-compile-deploy/X/X/src
あり、使用されているすべての.jar(GWTのものを除く)がにあり/path/company/projects/pull-compile-deploy/X/X/war/WEB-INF/lib/
ます。明らかに何かがうまくいかない。
質問:ファイル/path/company/projects/pull-compile-deploy/X/X/src/nl/company/projects/X/client/XMain.java
は存在し、クラスパスにimhoを含める必要がありますか?!誰かここで何がうまくいかないかもしれないという考えはありますか?eclipseがコンパイルのために実行するコマンドを正確にログで確認できる可能性はありますか?eclipseがエクスポートできるbuild.xmlを調べましたが、本番用にコンパイルするターゲットが含まれていないようです。
他の何か:明らかにGWTはにあるX.gwt.xml
ことを期待していますが/path/company/projects/pull-compile-deploy/X/X/src/nl/company/project/X.gwt.xml
、Eclipseはそれを入れました/path/company/projects/pull-compile-deploy/X/X/src/nl/company/project/X/X.gwt.xml
(つまり、1つのディレクトリを深くネストしました)が、シンボリックリンクを作成することでこれを修正しました。
さらに編集: 1つの回答は、コンパイルツールを呼び出す方法に焦点を当てていたため、Antで書き直しました。以下を参照してください。もちろん問題は残っています。
<!-- Compile the source using javac. -->
<target name="compile" depends="init">
<javac srcdir="src/" destdir="bin/">
<classpath refid="project.classpath"/>
</javac>
</target>
<!-- Use the GWT-compiler. -->
<target name="gwt-compile" depends="compile">
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
<classpath>
<path refid="project.classpath"/>
<pathelement location="src/"/>
<pathelement location="bin/"/>
</classpath>
<jvmarg value="-Xmx512M"/>
<arg value="${module.name}"/>
</java>
</target>
上記のAntスクリプトに何か問題がありますか?
module.name = nl.company.projects.X
のパスにrefid="project.classpath"
は、使用されているすべてのライブラリとGWTライブラリ(gwt-user.jar、gwt-dev.jar、validation-api-1.0.0.GA(-source).jar)が含まれています。
XMainクラスは(Objectから以外は)何も継承せず、EntryPoint(gwt-user.jarに含まれている)のみを実装します。したがって、この問題は、コンパイラーが提供する2番目のヒントに関連しているとは思いません。
何か案は?