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 机器上结帐并构建良好。我尝试使用 CVS 从命令行检查它,使用 JDeveloper 和 Eclipse,在 Windows XP 机器上都具有相同的结果。我在网上看到过 JAR 损坏的帖子,但这似乎很奇怪,因为相同的 JAR 可以在 linux 机器上正常编译。我已经尝试删除和使用新的 JAR。在命令行中,我使用 CVSNT 得到了相同的结果。谢谢,汤姆

4

1 回答 1

4

值得检查的一件事是 jars 是否被无意中作为非二进制文件添加到 CVS。

您可以使用将它们标记为二进制文件

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

在 Windows 系统上,非二进制文件的签出可能会导致将一个字符的行结尾转换为两个字符 - 这会破坏像 jar 一样的真正二进制文件。在 unix/linux 系统上签出同一个文件时,您可能不会注意到这一点,因为在签出时对“文本”文件没有特殊处理。

此外,如果从 Windows 系统作为文本文件签入,由于行结束转换和关键字替换,二进制文件可能会损坏。

于 2010-09-30T14:20:29.877 回答