Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ant build在一个系统上工作,而不是在另一个系统上工作_Java_Ant_Compiler Errors_Hudson_Findbugs - Fatal编程技术网

Java Ant build在一个系统上工作,而不是在另一个系统上工作

Java Ant build在一个系统上工作,而不是在另一个系统上工作,java,ant,compiler-errors,hudson,findbugs,Java,Ant,Compiler Errors,Hudson,Findbugs,我们最近在构建和测试过程中添加了FindBugs,但在使用@SuppressWarning注释时,在构建过程中遇到了问题 更有趣的是,代码将在我们的三台开发人员笔记本电脑上编译,但不会在构建系统上编译,即使代码是相同的,并且使用的Java编译器是相同的(1.5.0_22-32位) 问题是:我们有一个项目HCSBeans,它依赖于另一个项目CommonLibrary。CommonLibrary使用@SuppressWarning一次,而HCSBeans不使用。CommonLibrary构建在我们的

我们最近在构建和测试过程中添加了FindBugs,但在使用@SuppressWarning注释时,在构建过程中遇到了问题

更有趣的是,代码将在我们的三台开发人员笔记本电脑上编译,但不会在构建系统上编译,即使代码是相同的,并且使用的Java编译器是相同的(1.5.0_22-32位)

问题是:我们有一个项目HCSBeans,它依赖于另一个项目CommonLibrary。CommonLibrary使用@SuppressWarning一次,而HCSBeans不使用。CommonLibrary构建在我们的笔记本电脑和构建系统上,但HCSBeans不构建在构建系统上。在这一点上,我找不到构建系统和我的笔记本电脑之间的区别

以下是构建系统的详细Ant输出(注意:我们没有使用Maven):

以下是我的笔记本电脑的详细Ant输出:

-do-compile:
    [mkdir] Created dir: C:\hcs\orc\nb\HCSBeans\build\empty
    [javac] com\hcs\orc\ui\BindingHandler.java added as com\hcs\orc\ui\BindingHandler.class doesn't exist.
    [javac] com\hcs\orc\ui\JRadioButtonUpdatable.java added as com\hcs\orc\ui\JRadioButtonUpdatable.class doesn't exist.
    [javac] com\hcs\orc\ui\JTextAreaSizeFix.java added as com\hcs\orc\ui\JTextAreaSizeFix.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCAssignmentPanel.java added as com\hcs\orc\ui\ORCAssignmentPanel.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCCheckBox.java added as com\hcs\orc\ui\ORCCheckBox.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCLabel.java added as com\hcs\orc\ui\ORCLabel.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCLabelBeanInfo.java added as com\hcs\orc\ui\ORCLabelBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCPanel.java added as com\hcs\orc\ui\ORCPanel.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCPanelBeanInfo.java added as com\hcs\orc\ui\ORCPanelBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCRadioButton.java added as com\hcs\orc\ui\ORCRadioButton.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCRadioButtonBeanInfo.java added as com\hcs\orc\ui\ORCRadioButtonBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCRadioButtonGroup.java added as com\hcs\orc\ui\ORCRadioButtonGroup.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCRadioButtonGroupBeanInfo.java added as com\hcs\orc\ui\ORCRadioButtonGroupBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCScrollPane.java added as com\hcs\orc\ui\ORCScrollPane.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCScrollPaneBeanInfo.java added as com\hcs\orc\ui\ORCScrollPaneBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCSeparator.java added as com\hcs\orc\ui\ORCSeparator.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCSeparatorBeanInfo.java added as com\hcs\orc\ui\ORCSeparatorBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCSplitPane.java added as com\hcs\orc\ui\ORCSplitPane.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCSplitPaneBeanInfo.java added as com\hcs\orc\ui\ORCSplitPaneBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTabbedPane.java added as com\hcs\orc\ui\ORCTabbedPane.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTabbedPaneBeanInfo.java added as com\hcs\orc\ui\ORCTabbedPaneBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTable.java added as com\hcs\orc\ui\ORCTable.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTableBeanInfo.java added as com\hcs\orc\ui\ORCTableBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextArea.java added as com\hcs\orc\ui\ORCTextArea.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextAreaBeanInfo.java added as com\hcs\orc\ui\ORCTextAreaBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextField.java added as com\hcs\orc\ui\ORCTextField.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextFieldBeanInfo.java added as com\hcs\orc\ui\ORCTextFieldBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextPane.java added as com\hcs\orc\ui\ORCTextPane.class doesn't exist.
    [javac] com\hcs\orc\ui\ORCTextPaneBeanInfo.java added as com\hcs\orc\ui\ORCTextPaneBeanInfo.class doesn't exist.
    [javac] com\hcs\orc\ui\RoundButtonBorder.java added as com\hcs\orc\ui\RoundButtonBorder.class doesn't exist.
    [javac] com\hcs\orc\ui\TextLabelUI.java added as com\hcs\orc\ui\TextLabelUI.class doesn't exist.
    [javac] com\hcs\orc\ui\TextTransfer.java added as com\hcs\orc\ui\TextTransfer.class doesn't exist.
    [javac] com\hcs\orc\ui\TouchButton.java added as com\hcs\orc\ui\TouchButton.class doesn't exist.
    [javac] com\hcs\orc\ui\TouchButtonUpdatable.java added as com\hcs\orc\ui\TouchButtonUpdatable.class doesn't exist.
    [javac] C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box.gif skipped - don't know how to handle it
    [javac] C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box_disabled.gif skipped - don't know how to handle it
    [javac] C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box_x.gif skipped - don't know how to handle it
    [javac] C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box_x_disabled.gif skipped - don't know how to handle it
    [javac] Compiling 34 source files to C:\hcs\orc\nb\HCSBeans\build\classes
    [javac] Using external javac compiler
    [javac] Compilation arguments:
    [javac] '-d'
    [javac] 'C:\hcs\orc\nb\HCSBeans\build\classes'
    [javac] '-classpath'
    [javac] 'C:\hcs\orc\nb\HCSBeans\build\classes;C:\hcs\orc\nb\CommonLibrary\dist\CommonLibrary.jar;C:\Program Files (x86)\NetBeans 7.2\platform\modules\ext\swing-layout-1.0.4.jar'
    [javac] '-sourcepath'
    [javac] 'C:\hcs\orc\nb\HCSBeans\build\empty'
    [javac] '-target'
    [javac] '1.5'
    [javac] '-encoding'
    [javac] 'windows-1252'
    [javac] '-g'
    [javac] '-source'
    [javac] '1.5'
    [javac]
    [javac] The ' characters around the executable and arguments are
    [javac] not part of the command.
    [javac] Files to be compiled:
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\BindingHandler.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\JRadioButtonUpdatable.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\JTextAreaSizeFix.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCAssignmentPanel.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCCheckBox.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCLabel.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCLabelBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCPanel.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCPanelBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButton.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonGroup.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonGroupBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCScrollPane.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCScrollPaneBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSeparator.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSeparatorBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSplitPane.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSplitPaneBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTabbedPane.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTabbedPaneBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTable.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTableBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextArea.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextAreaBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextField.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextFieldBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextPane.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextPaneBeanInfo.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\RoundButtonBorder.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\TextLabelUI.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\TextTransfer.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\TouchButton.java
    [javac]     C:\hcs\orc\nb\HCSBeans\src\com\hcs\orc\ui\TouchButtonUpdatable.java
除了编译错误,我看不出有什么区别

其他值得注意的事项:

  • 删除并重新检查两个项目的源代码 来自SVN
  • 比较Java的版本。两者都是32位Java 1.5.0_22。我知道这已经很老了,但我们有一些客户坚持这样做
  • CommonLibrary中只有一个对@SuppressWarning的引用,而HCSBeans中没有
  • 在构建CommonLibrary时,我们使用annotations.jar和jsr305.jar,但它们没有打包在一起,也没有被HCSBeans引用。它们在构建之后不应该是必需的
  • 我们的笔记本电脑是64位的,而构建系统是32位的,但两种Java安装都是32位的
  • 所有计算机都是MS Windows
  • 更新

    我将构建服务器切换为使用Java 1.6编译HCSBean,代码将进行编译(在删除未使用的SwingUtilities2导入之后),但是如果我将其切换回Java 1.5,它仍然会失败,并出现相同的错误。我开始怀疑Java1.5编译器有问题

    更新2

    一位同事发现了实际的区别。不确定为什么会发生这种情况,但这里是结果构建之间的区别。在我们的笔记本电脑上,CommonLibrary.jar MANIFEST.MF文件包含以下行:

    Class-Path: lib/annotations.jar lib/jsr305.jar
    

    这意味着在构建HCSBeans项目时,它会找到所需的annotations.jar文件。但是,在构建服务器上构建时,该类路径行不存在。不确定原因,但这是下一步调查。

    看起来该库使用的是SuppressWarning的FindBugs版本,而不是
    java.lang
    版本
    @SuppressWarning
    @java.lang.SuppressWarning
    和/或删除SuppressWarning的FindBugs版本的导入,并查看是否修复了它


    还可以尝试在hudson看到的类路径中添加FindBugs作为库。它看起来像是在你的开发人员机器上用NetBeans构建的,如果NetBeans偷偷地将FindBugs放入ant使用的类路径中,我不会感到震惊,因此我们发现了问题。安装了NetBeans(即使我们不是直接从NetBeans构建)的笔记本电脑使用CopyLibs来构建jar文件,这在Manifest.MF文件中添加了所需的行:

    Class-Path: lib/annotations.jar lib/jsr305.jar
    
    但是,我们的构建服务器没有安装NetBeans,而是使用j2seproject1:jar构建jar文件

    解决方案是在构建我们的构建服务器时将其添加到-D Javac属性中(对于感兴趣的人,这是Hudson):

    现在我们的笔记本电脑和构建服务器都在使用CopyLibs,它们都在编译

    哎呀!真是一团糟


    感谢那些给我指点的人(@Peter Eliot&@Disco3)。

    是否可以在构建机器上重新安装java(或者在另一个位置重新安装,我不知道在Windows上是否可以)?编译器错误相当严重,所以我想先试试。在开发人员的笔记本电脑上,您是从Netbeans内部运行ant,还是从独立的ant安装运行ant?如果是从Netbeans内部运行,那么在开发人员笔记本电脑上从单机版ant运行时是否会出现相同的错误?在笔记本电脑上单机版和Netbeans内部运行ant。同样的结果。@Disco3我安装了JDK 1.5.0_u15,得到了同样的结果。现在我真的很困惑。我们将\@SuppressWarnings引用为\@edu.umd.cs.findbugs.annotations.SuppressWarnings(…),所以Java不应该在Java.lang和edu.umd.cs.findbugs.annotations之间混淆。删除\@SuppressWarning的FindBugs版本可能会修复编译问题,但会使FindBugs对我们毫无用处(我们将反复检查太多警告)。谢谢,但我正在寻找一个可以使用FindBugs\@SuppressWarnings和compile的解决方案。添加了另一个可能的解决方案——这可能是Netbeans和Hudson之间的类路径问题。两个类路径都显示在上面的输出中,对我来说是相同的(减去根目录)。我应该说我现在正在命令行上运行这两个ant(以删除Netbeans和Hudson的变量)。命令行在这两台机器上运行的ant输出是否与问题中粘贴的文本完全相同?具体来说,它是否仍在使用开发者笔记本电脑上的
    C:\ProgramFiles(x86)\NetBeans 7.2\platform\modules\ext\swing-layout-1.0.4.jar'
    和哈德逊盒子上的
    C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\ORC\lib\swing-layout-1.0.4.jar
    ?彼得,抓到了。我在笔记本电脑上解决了这个问题,因此它与构建系统相匹配:
    [javac]'C:\hcs\orc\nb\HCSBeans\build\classes;C:\hcs\orc\nb\CommonLibrary\dist\CommonLibrary.jar;C:\hcs\orc\lib\swing-layout-1.0.4.jar'
    ,但这并没有在笔记本电脑上重现故障。
    Class-Path: lib/annotations.jar lib/jsr305.jar
    
    libs.CopyLibs.classpath=C:\\Documents and Settings\\stephen\\.hudson\\jobs\\ORC Trunk\\workspace\\orc\\lib\\netbeans\\org-netbeans-modules-java-j2seproject-copylibstask.jar