2011-07-09 30 views
0

javacタスクを使用してコンパイルしようとします。私はコンソールには何も得ていない。以前は、私がコンパイルしているもののいくつかの情報を取得していました。[javac] "...."javacを使用してコンパイルするときの問題

私はきれいにして再コンパイルすると出力が見えますが、コンパイル時に問題が発生します再び。

この問題についても以前はありませんでした。そしてこの問題は、Tomcatが "ZipException:oversubscribed literal/length tree"と言う.warファイルについて文句を言うようになります。

この問題で私を導く人はいますか?

編集:ここではAntスクリプト

<javac destdir="${build.dir}" source="1.6" target="1.6" debug="true" deprecation="false" optimize="false" failonerror="true"> 
     <src path="${src.dir}" /> 
     <classpath refid="master-classpath" /> 
</javac> 

の関連する部分がある点に注意してください。同じファイルで以前に非常によく働いていたこと。今はプロジェクト内の何も変更せずに動作しません。

注:私は作業していたプロジェクトをアーカイブしました。それは完璧にコンパイルされ、私はいくつかの人々にもアーカイブファイルを与え、それは彼らと一緒に働いていた。その後、私はZipExceptionを取得するまでいくつかの変更を加えました。 その後、変更を保存していた古いアーカイブファイルを使用しましたが、同じエラーZipExceptionが表示されます。ですから、問題はソースコードやantスクリプトとはまったく異なります。私はそれが私の環境の問題だと信じていますが、何が間違っているのか分かりません。

build.xmlファイルは以下の通りです:

<?xml version="1.0"?> 
<!DOCTYPE project> 
<project name="GameServerPart1" basedir="." default="usage"> 
    <property file="../build.properties" /> 

    <property name="src.dir" value="src/main/java" /> 
    <property name="web.dir" value="war" /> 
    <property name="build.dir" value="${web.dir}/WEB-INF/classes" /> 
    <property name="name" value="GameServerPart1" /> 

    <path id="master-classpath"> 
     <fileset dir="src/main/webapp/WEB-INF/lib"> 
      <include name="*.jar" /> 
     </fileset> 
     <!-- We need the servlet API classes: --> 
     <!-- * for Tomcat 5/6 use servlet-api.jar --> 
     <!-- * for other app servers - check the docs --> 
     <!--<fileset dir="${appserver.lib}"> 
      <include name="servlet*.jar"/> 
     </fileset> --> 
     <pathelement path="${build.dir}" /> 
    </path> 

    <target name="usage"> 
     <echo message="" /> 
     <echo message="${name} build file" /> 
     <echo message="-----------------------------------" /> 
     <echo message="" /> 
     <echo message="Available targets are:" /> 
     <echo message="" /> 
     <echo message="build  --> Build the application" /> 
     <echo message="deploy --> Deploy application as directory" /> 
     <echo message="deploywar --> Deploy application as a WAR file" /> 
     <echo message="cleanr --> clean the build." /> 
     <echo message="" /> 
    </target> 

    <target name="clean"> 
     <delete dir="${web.dir}" /> 
    </target> 

    <target name="build" description="Compile main source tree java files"> 
     <mkdir dir="${build.dir}" /> 
     <copy todir="${web.dir}/WEB-INF/"> 
      <fileset dir="src/main/webapp/WEB-INF/"> 
       <include name="**/*.*" /> 
      </fileset> 
      <filterchain> 
       <striplinecomments> 
        <comment value="!" /> 
       </striplinecomments> 
       <replacetokens> 
        <token key="hibernate.connection.url" value="${hibernate.connection.url}" /> 
        <token key="hibernate.connection.username" value="${hibernate.connection.username}" /> 
        <token key="hibernate.connection.password" value="${hibernate.connection.password}" /> 
        <token key="fontFamily" value="arial, helvetica, sans-serif" /> 
       </replacetokens> 
      </filterchain> 
     </copy> 
     <copy todir="${build.dir}"> 
      <fileset dir="src/main/resources"> 
       <include name="**/*.*" /> 
      </fileset> 
      <filterchain> 
       <striplinecomments> 
        <comment value="!" /> 
       </striplinecomments> 
       <replacetokens> 
        <token key="hibernate.connection.url" value="${hibernate.connection.url}" /> 
        <token key="hibernate.connection.username" value="${hibernate.connection.username}" /> 
        <token key="hibernate.connection.password" value="${hibernate.connection.password}" /> 
        <token key="fontFamily" value="arial, helvetica, sans-serif" /> 
       </replacetokens> 
      </filterchain> 
     </copy> 

     <javac destdir="${build.dir}" source="1.6" target="1.6" debug="true" deprecation="false" optimize="false" failonerror="true"> 
      <src path="${src.dir}" /> 
      <classpath refid="master-classpath" /> 
     </javac> 
    </target> 

    <target name="deploywar" depends="build" description="Deploy application as a WAR file"> 
     <war destfile="${name}.war" webxml="${web.dir}/WEB-INF/web.xml"> 
      <fileset dir="${web.dir}"> 
       <include name="**/*.*" /> 
      </fileset> 
     </war> 
     <move todir="${deploy.path}" preservelastmodified="true"> 
      <fileset dir="."> 
       <include name="*.war" /> 
      </fileset> 
     </move> 
    </target> 

</project> 
+0

ANTを使用していますか?あなたのANTスクリプトは何ですか?細部の量は十分ではありません –

+0

そして、それは何かtomcatと関係がありますか? 'ant -d'を試してください –

+0

私はすべての情報を追加しました。実際、Tomcatにアプリケーションを配備することが私の目標です。これがどのように起こっているのかを調査しました。ところで、-dは何をしますか? – mohamede1945

答えて

1

問題が見つかりました。

<copy todir="${web.dir}/WEB-INF/"> 
     <fileset dir="src/main/webapp/WEB-INF/"> 
      <include name="**/*.*" /> 
     </fileset> 
     <filterchain> 
      <striplinecomments> 
       <comment value="!" /> 
      </striplinecomments> 
      <replacetokens> 
       <token key="hibernate.connection.url" value="${hibernate.connection.url}" /> 
       <token key="hibernate.connection.username" value="${hibernate.connection.username}" /> 
       <token key="hibernate.connection.password" value="${hibernate.connection.password}" /> 
       <token key="fontFamily" value="arial, helvetica, sans-serif" /> 
      </replacetokens> 
     </filterchain> 
    </copy> 

<copy todir="${web.dir}/WEB-INF/"> 
     <fileset dir="src/main/webapp/WEB-INF/"> 
      <include name="**/*.*" /> 
     </fileset> 
    </copy> 

する必要があり、その後、すべてがOKです。

0

その例外メッセージをグーグルで、それは読んしようとしている(Tomcatがある)あなたがZIPファイルの破損が原因であることを示唆しています。それが壊れた理由を理解するために、WARファイルをどのように構築するかについての詳細が必要です。

+0

私はそれをgoogleして、それを見つけました。私は元の記事では、プロジェクトをコンパイルする際の問題を述べた。以前は、 "javac"で何が起こっているのかについての情報を得ていましたが、今は再コンパイルすると何も得られません。 PS:build.xmlもソースコードファイルも変更していません。 – mohamede1945

0

私は、クリーンで削除されたビルド成果物のさまざまなセットを取り除いて、問題の原因となっているものを見つけようとします。うまくいけば、これは問題を理解するのに十分な洞察力を与えるでしょう。

+0

見たい場合はbuild.xmlを追加しました。 – mohamede1945

0

Antのコンパイラタスクは、出力クラスがソースクラスよりも新しいことを検出すると、そのクラスがソースコードから既にビルドされていなければならないと判断するという意味でインテリジェントです。このような状況では、コンパイラは何もしません(すでに作業が検出されているため)。

コンパイラが十分な処理を行っていない場合、出力はありません。

最初のコンパイル後、ソースファイルを開き、簡単な変更(たとえばコメントなど)してファイルを保存します。これにより、ソースは既存のコンパイルされたクラスよりも新しいものになります。その後、Antタスクを呼び出してクラスをビルドすると、javacタスクはソースがそのクラスより新しいことを検出し、新しいクラスファイルを生成するソースファイルを再コンパイルします。

javacタスクは何かをしているので、報告するものがあります。だから、少し出力があるはずです(しかし、すべてを構築しなければならない場合に比べて)。

+0

見たい場合はbuild.xmlを追加しました。 – mohamede1945

+0

私が私のポストで言ったように。私はいくつかの情報を得ていましたが、今はそうではありません。私はこれがZipExceptionの根本的な問題だと信じています。 ZipExceptionがこれによって引き起こされたと思わないなら、何が問題だと思いますか? – mohamede1945

関連する問題