4

CVS にコードがあり、コードをチェックアウトして Windows ボックスで ANT ビルドを実行すると、次のエラーが表示されます。

Buildfile: C:\Java\JDeveloper\library\build.xml

compile:
    [javac] Compiling 181 source files to C:\Java\JDeveloper\library
    [javac] error: error reading C:\Java\JDeveloper\library\lib\jdom.jar; invalid CEN header (bad signature)
    [javac] error: error reading C:\Java\JDeveloper\library\lib\tidy.jar; invalid CEN header (bad signature)
    [javac] error: error reading C:\Java\JDeveloper\library\lib\parser.jar; invalid CEN header (bad signature)
    [javac] error: error reading C:\Java\JDeveloper\library\lib\syslog.jar; invalid CEN header (bad signature)
    [javac] error: error reading C:\Java\JDeveloper\library\lib\regexp.jar; invalid CEN header (bad signature)
    [javac] 5 errors

BUILD FAILED

私はそれを何度もチェックしました。このコードは、Linux ボックスでチェックアウトして正常にビルドされます。JDeveloperとEclipseを使用してコマンドラインからCVSでチェックアウトしようとしましたが、Windows XPボックスですべて同じ結果になりました。JAR が破損しているという投稿を Web で見たことがありますが、Linux ボックスでは同じ JAR が正常にコンパイルされるため、これは奇妙に思えます。そして、新しいJARを削除して使用しようとしました。コマンドラインから、同じ結果で CVSNT を使用していました。ありがとう、トム

4

1 に答える 1

4

チェックする価値のあることの 1 つは、jar ファイルが非バイナリ ファイルとして CVS に誤って追加されていないかどうかです。

を使用してバイナリとしてマークできます

cvs admin -kb <jar>
cvs update -A <jar>

Windows システムでは、非バイナリ ファイルをチェックアウトすると、1 文字の行末が 2 文字に変換される可能性があります。これにより、jar のような真のバイナリが破損します。Unix/Linux システムで同じファイルをチェックアウトする場合、「テキスト」ファイルをチェックアウトする際に特別な処理が行われないため、これに気付かない可能性があります。

また、Windows システムからテキスト ファイルとしてチェックインすると、行末の変換やキーワードの置換が原因で、バイナリが破損する可能性があります。

于 2010-09-30T14:20:29.877 に答える