2009-06-03 10 views
2

GWTをコンパイルするAntビルドスクリプトを実行しようとしています。このスクリプトには、それぞれが比較的長いパスを持つ多数のライブラリが含まれています。私のGWTコードはこれらのライブラリの一部にしか触れません。しかし、これと私が開発している他のすべてのアプリケーションで使用するlibディレクトリのすべてのライブラリを含めると便利です。ここに私のビルドスクリプトの関連部分は次のとおりです。多数のパラメータを持つGWTコードをコンパイルする - CreateProcessのchar制限?

<path id="gwt.project.class.path"> 
    <pathelement location="gen"/> 
    <pathelement location="${gwt.sdk}/gwt-user.jar"/> 
    <fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/> 
    <fileset dir="${smartgwt.sdk}" includes="smartgwt*.jar"/> 
    <!-- Add any additional non-server libs (such as JUnit) --> 
    <fileset dir="lib" includes="**/*.jar"/> 
</path> 

<target name="gwtc" depends="compileApp" description="GWT compile to JavaScript" unless="noGWTModule"> 
<java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> 
    <classpath> 
    <pathelement location="src"/> 
    <path refid="gwt.project.class.path"/> 
    </classpath> 
    <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError --> 
    <jvmarg value="-Xmx256M"/> 
    <!-- Additional arguments like -style PRETTY or -logLevel DEBUG --> 
    <arg value="${gwt.module}"/> 
    <arg value="-war" /> 
    <arg value="${gwt.gen.dir}" /> 
</java> 
</target>` 

私はこれを実行しようとすると、私は次のエラーを取得する:

java.io.IOException: CreateProcess: "C:\Program Files\Java\jdk1.5.0_11\jre\bin\java.exe" -Xmx256M -classpath "C:\Program Files\Common Files\eclipse\workspace\development\src;C:\Program Files\Common Files\eclipse\workspace\development\lib\build\hbBuildSupport.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\ehcache.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-annotations.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-commons-annotations.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-entitymanager.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-tools.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate-validator.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\hibernate3.jar;C:\Program Files\Common Files\eclipse\workspace\development\lib\db\hibernate\javassi� 

コンパイルのsomepointで、文字列はすべて含むと思われますライブラリパスの一部が切り捨てられています。これはCreateProcessの文字制限に起因する可能性がありますか?このCreateProcessコマンド文字列は、切り捨て前の文字数が約1024文字に制限されているため、小さな制限のようです。この制限を増やす方法はありますか?任意の思考/ソリューション/回避策が評価されました。

おかげで、 マユール

+0

エラーをフォーマットしてください、それが読めないのです。 –

+0

申し訳ありません、新しいstackoverflow、ので、フォーマットを把握する必要がありました。ありがとう。 – P4ndaman

答えて

2

問題は、Windowsのコマンドラインは8191文字に制限されており、GWTはクラスパス内の各jarに完全なパスを設定しています。これを修正する唯一の方法は、jarsを短いパスのディレクトリに移動することです。

これは、シンボリックリンクを作成し、ビルドファイル内のそのリンクを参照することで、ウィンドウ下で行うことができます。 Cのルートからこの

ような何か:

mklink /D jars C:\Program Files\Common Files\eclipse\workspace\development\lib 

Wikpedia entry on windows symbolic links

0
非常に長いクラスパスのための一つの可能​​な回避策は java.ext.dirsプロパティを使用すると、この内のすべてのあなたのコンパイル時の依存関係(今、あなたのクラスパスで参照されているJAR-ファイル)をドロップすることです

ディレクトリ。

関連する問題