2012-01-02 1 views
4

表示される文字列を構築するためにUTF-8エンコードされた.txtファイルを読み込むJavaプロジェクトがあります。 Eclipseで実行すると、ファイルは読み込まれ、期待どおりに表示されますが、私の蟻のビルド後には文字が出てこないようになっています。ここでJavaアプリケーションはUTF-8でエンコードされたテキストファイルを読み取りますが、antビルド後に文字が予期しないものになります

は私のbuild.xmlファイルは、私が

<compilerarg line="-encoding utf-8"/> 

を使用してUTF-8文字エンコーディングを使用してコンパイルしようとしたが、明らかに、これは十分ではありません

<?xml version="1.0"?> 
<project name="Rutherford" default="jar"> 

    <property name="libsSrc" value="libs"/> 
    <property name="build" value="build"/> 
    <property name="classes" value="build/classes"/> 
    <property name="jar" value="build/jar"/> 
    <property name="libs" value="build/libs"/> 

    <path id="classpath"> 
      <fileset dir="${libsSrc}" includes="*.jar"/> 
    </path> 

    <pathconvert property="mf.classpath" pathsep=" "> 
      <path refid="classpath"/> 
      <mapper> 
        <chainedmapper> 
          <flattenmapper/> 
          <globmapper from="*.jar" to="lib/*.jar"/> 
        </chainedmapper> 
      </mapper> 
    </pathconvert> 

    <target name="clean" description="remove intermediate files"> 
     <delete dir="build"/> 
    </target> 

    <target name="compile" description="compile the Java source code to class files"> 
     <mkdir dir="${classes}"/> 
     <javac srcdir="." destdir="${classes}" classpathref="classpath"> 
      <compilerarg line="-encoding utf-8"/> 
     </javac> 
    </target> 

    <target name="jar" depends="compile" description="create a Jar file for the application"> 
     <mkdir dir="${jar}"/> 
     <jar destfile="${jar}/App.jar"> 
      <zipgroupfileset dir="${libsSrc}" includes="*.jar"/> 
      <fileset dir="${classes}" includes="**/*.class"/> 
      <manifest> 
       <attribute name="Main-Class" value="nat.rutherford.DesktopStarter"/> 
       <attribute name="Class-Path" value="${mf.classpath}"/> 
      </manifest> 
     </jar> 
    </target> 

</project> 

ですが、私はに変更する何が必要なのかこれを動作させるには?

おかげ

編集1

私はとして.txtファイルをお読みください。文字列変数に文字列を返す

public String fileToString(String file) { 
    InputStream in = new BufferedInputStream(Gdx.files.internal(file).read()); 
    return new Scanner(in).useDelimiter("\\A").next(); 
} 

は、その後、私は単純に、この文字列を取り、コンパイルとEclipse内で実行されているとき、それはうまく動作object

にそれを渡します。

編集2

これは修正シンプル

public String fileToString(String file) { 
    InputStream in = new BufferedInputStream(Gdx.files.internal(file).read()); 
    return new Scanner(in, "UTF-8").useDelimiter("\\A").next(); 
} 

あなたが見えるかわからです!笑ありがとう!

+0

ここでは、ここでは、コンパイルされたクラスを含むフォルダにantによってコピーされるべきリソースファイルについて言及していると思いますか? –

+0

@owlsteadはい、それらはリソースファイルであり、コンパイルされたクラスを含むフォルダには現在コピーされていません。私は現在、JARとともに手動でそれらをスティックしています。私はAntにはあまりよくない。それをコピーすればうまくいくと思いますか?私はこれが事実かもしれないという疑いがあったが、私はそれを達成する方法がわからなかった。 – Neilos

答えて

3

The documentationによると、compiler-argの代わりにencoding='utf-8'を使用してください。

しかし、あなたの問題は実行時であり、コンパイル時ではないと思われます。あなたはエンコーディングを通さずにOutputStreamWriterオブジェクトを作成しますか?または、興味深い文字をSystem.out.printlnに渡しますか?または対応してInputStreamReaderまたはScanner?この場合の修正は、-Dfile.encoding=utf-8をコマンドラインに追加することです。

+0

utf-8コンパイルエラーが発生する** javacはネストされた "encoding"要素をサポートしていません** javacタグ内にencodingパラメータを置くとコンパイルできます。しかし、これは問題を解決していない、私の文字はまだ間違って表示されます。 – Neilos

+0

私は.txtファイルで何をしているのか私の**編集1 **を見てください(私はlibGDXライブラリを使用していますが、この問題に悩まされているとは思いません)。 – Neilos

+0

あなたは正しく、実行時の問題でした。 **編集2 **に見られるようにスキャナを変更しました** – Neilos

関連する問題