我们最近将 FindBugs 添加到我们的构建和测试过程中,但在使用 @SuppressWarning 注释时遇到了构建问题。
更有趣的是,代码将在我们的三台开发人员笔记本电脑上编译,但不会在我们的构建系统上编译,即使代码相同并且使用的 Java 编译器相同(1.5.0_22 - 32 位)。
问题是:我们有一个项目 HCSBeans,它依赖于另一个项目 CommonLibrary。 CommonLibrary 使用 @SuppressWarning 一次,而 HCSBeans 则不使用。 CommonLibrary 在我们的笔记本电脑和构建系统上构建,但 HCSBeans 不在构建系统上构建。此时我找不到构建系统和我的笔记本电脑之间的差异。
这是构建系统的详细 Ant 输出(注意:我们没有使用 Maven):
-do-compile:
[mkdir] Created dir: C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\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:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box.gif skipped - don't know how to handle it
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box_disabled.gif skipped - don't know how to handle it
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\resources\black_box_x.gif skipped - don't know how to handle it
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\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:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\build\classes
[javac] Using external javac compiler
[javac] Compilation arguments:
[javac] '-d'
[javac] 'C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\build\classes'
[javac] '-classpath'
[javac] 'C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\build\classes;C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\CommonLibrary\dist\CommonLibrary.jar;C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\lib\swing-layout-1.0.4.jar'
[javac] '-sourcepath'
[javac] 'C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\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:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\BindingHandler.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\JRadioButtonUpdatable.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\JTextAreaSizeFix.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCAssignmentPanel.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCCheckBox.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCLabel.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCLabelBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCPanel.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCPanelBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButton.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonGroup.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCRadioButtonGroupBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCScrollPane.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCScrollPaneBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSeparator.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSeparatorBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSplitPane.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCSplitPaneBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTabbedPane.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTabbedPaneBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTable.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTableBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextArea.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextAreaBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextField.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextFieldBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextPane.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\ORCTextPaneBeanInfo.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\RoundButtonBorder.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\TextLabelUI.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\TextTransfer.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\TouchButton.java
[javac] C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\src\com\hcs\orc\ui\TouchButtonUpdatable.java
[javac] An exception has occurred in the compiler (1.5.0_22). Please file a bug at the Java Developer Connection (http://java.sun.com/webapps/bugreport) after checking the Bug Parade for duplicates. Include your program and the following diagnostic in your report. Thank you.
[javac] com.sun.tools.javac.code.Symbol$CompletionFailure: file edu\umd\cs\findbugs\annotations\SuppressWarnings.class not found
[ant] Exiting C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\HCSBeans\build.xml.
[antcall] Exiting C:\Documents and Settings\stephen\.hudson\jobs\ORC Trunk\workspace\orc\nb\build.xml.
这是我的笔记本电脑的详细 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,但它们没有与CommonLibrary一起打包,也没有被HCSBeans引用。构建后不需要它们。
- 我们的笔记本电脑是 64 位,而构建系统是 32 位,但两个 Java 安装都是 32 位。
- 所有计算机均为 MS Windows。
更新
我将构建服务器切换为使用 Java 1.6 编译 HCSBean,并且代码可以编译(在删除对 SwingUtilities2 的未使用的导入之后),但如果我将其切换回 Java 1.5,它仍然会失败并出现相同的错误。我开始怀疑 Java 1.5 编译器有问题。
更新2
一位同事发现了实际的差异。不确定为什么会发生这种情况,但这是生成的版本之间的差异。在我们的笔记本电脑上,CommonLibrary.jar MANIFEST.MF 文件包含此行:
Class-Path: lib/annotations.jar lib/jsr305.jar
这意味着构建 HCSBeans 项目时,它会找到所需的注释.jar 文件。但是,当我们在构建服务器上构建时,该类路径行不存在。不知道为什么,但这是下一步的调查。
最佳答案
所以我们发现了问题。我们的笔记本电脑安装了 NetBeans(即使我们不是直接从 NetBeans 构建),正在使用 CopyLibs 构建 jar 文件,这会将所需的行添加到 Manifest.MF 文件中:
Class-Path: lib/annotations.jar lib/jsr305.jar
但是,我们的构建服务器未安装 NetBeans,而是使用 j2seproject1:jar 来构建 jar 文件。
解决方案是在我们的构建服务器上构建时将其添加到 -D Javac 属性(对于那些感兴趣的人来说是 Hudson):
libs.CopyLibs.classpath=C:\\Documents and Settings\\stephen\\.hudson\\jobs\\ORC Trunk\\workspace\\orc\\lib\\netbeans\\org-netbeans-modules-java-j2seproject-copylibstask.jar
现在我们的笔记本电脑和构建服务器都使用 CopyLibs 并且它们都可以编译。
哎呀!弄清楚真是一团糟。
感谢那些一路上给我指点的人(@Peter-Eliot 和 @Disco3)。
关于java - Ant 构建可以在一个系统上运行,而不能在另一个系统上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343134/