2012-02-27 11 views
1

Eclipseでソースディレクトリから出力ディレクトリにすべてのファイル(.javaを除く)をコピーするには?私のソースの下にいくつかのクラスファイルがありますが、それらは除外されています。 "Preferences - > Java - > Compiler - > Building - > Filtered Resources"という設定は私のためには機能しません。Eclipseコンパイラは、既存のクラスファイルをターゲットディレクトリにコピーする方法を教えてください。

ありがとうございます!

EDIT

私は解決策で出てきた:Eclipseプロジェクトへの追加Builderを追加します。これはAntスクリプトです:

<project name="example" default="copy_resources" basedir="."> 
    <target name="copy_resources" depends="" > 
     <copy todir="bin" overwrite="false"> 
      <fileset dir="src"> 
       <exclude name="**/*.java" /> 
      </fileset> 
     </copy> 
    </target> 
</project> 

しかし、Antスクリプトを実行するには、「プロジェクトの作成」コマンドを手動で起動する必要があります。 "Clean"を実行すると、実行されません。

+0

元のディレクトリに.classファイルがどのようにありますか?これはかなり醜いと思われる... –

+0

背景については、この質問をチェックしてください:http://stackoverflow.com/questions/9468607/how-to-make-javac-copy-existing-class-files-to-the-target- dir – Andrej

答えて

2

クラスディレクトリはソースとは別のディレクトリに置く必要があります。通常、それらはクラスディレクトリではなく、よく)。あなたが別のディレクトリにあるクラスたら

は:

を右プロパティ]> [Javaのビルド・パス>ライブラリが ]タブ> [クラスフォルダボタンを追加]> [プロジェクト]をクリックします>ディレクトリを選択> OK> OK

プロジェクトをビルドするときに、クラスディレクトリを含める必要があります。

+0

それは異なっています。ソースにある ".class"ファイルは、その場所に置く必要があるリソースです。 – Andrej

+0

バックグラウンドに関する私の別の質問を確認してください:http://stackoverflow.com/questions/9468607/how-to-make-javac-copy-existing-class-files-to-the-target-dir – Andrej

+0

なぜあなたは彼らはソースディレクトリにそれらを持っている?まったく同じパッケージ構造を使用すると、クラスファイルを配置する場所に違いはありません(ビルドパスに追加した場合) –

0

.classのようなファイルは、他のものからのアーティファクト、チェックインされたもの、または外部プロセスによって作成されたものです。どちらの場合でも、Eclipseは(あなたの説明から)それらを幸せに認識していないようです。

以下を試すことができます:プロジェクトに新しいビルダーを追加します。 「Ant」を選択し、ワークスペースのルートにあるbuild.xml(または、このファイルを作成する必要がある場所)を選択します。 antスクリプトは、プロジェクトが再構築されるたびに実行されます。

<?xml version="1.0" encoding="UTF-8"?> 
<project default="copy"> 
    <target name="copy"> 
    <mkdir dir="someplace"/> 
     <copy todir="someplace"> 
     <fileset dir="source"> 
      <include name="**/*.class"/> 
     </fileset> 
     </copy>  
    </target> 
</project> 

ファイルの送信元と送信先を修正するだけで済みます。

+0

問題が正しく解決しました。 1分前に同じソリューションを投稿しました:-)残念ながら、「ビルドが自動的に有効になっていても」手動で「ビルドプロジェクト」操作をトリガーする必要があります。 – Andrej

関連する問題