Java编译警告

时间:2012-03-20 00:07:59

标签: java swing netbeans

Netbeans 7.1.1中成功构建JAR文件时,我遇到了这个警告:

...
warning: [options] bootstrap class path not set in conjunction with -source 1.6
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 warning
...

这是什么意思?此外,Java运行时是否会影响JAR(应用程序)的兼容性?

当我在XPUbuntu中运行JAR时,应用程序似乎很好,但是当我尝试在Fedora上运行它时,它不会使用全屏并且右键单击JTable时没有上下文菜单。我该怎么办呢?

部分代码段:

此代码调用JFrame,在加载时将其设置为全屏,但这在Fedora中不起作用。

this.setVisible(false);
frmMain xForm = new frmMain();

xForm.setLocationRelativeTo(null);
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();

xForm.setMaximizedBounds(e.getMaximumWindowBounds());
xForm.setExtendedState(xForm.getExtendedState()|JFrame.MAXIMIZED_BOTH );
xForm.setVisible(true);

当我右键点击JTable以显示上下文菜单时,WindowsfedoraUbuntu中没有正常工作。

private void tableItemMouseReleased(java.awt.event.MouseEvent evt) {                                        

    if ( SwingUtilities.isRightMouseButton( evt ))
    {
        int r = tableItem.rowAtPoint(evt.getPoint());
        if (r >= 0 && r < tableItem.getRowCount())
        {
            tableItem.setRowSelectionInterval(r, r);
        } 
        else 
        {
            tableItem.clearSelection();
        }

        int rowindex = tableItem.getSelectedRow();
        if (rowindex < 0)
            return;

        if (evt.isPopupTrigger() && evt.getComponent() instanceof JTable ) 
        {
            pmItem.show(evt.getComponent(), evt.getX(), evt.getY());
        }
    }
}   

更新1

通过在编译选项中添加-Xlint:unchecked,我收到了以下警告:

warning: [options] bootstrap class path not set in conjunction with -source 1.6

C:\Documents and Settings\Totet\My Documents\NetBeansProjects\DCWD_DepreciationMonitoringSystem\src\DCWDDMS\frmItemDepreciation.java:432: 
warning: [unchecked] unchecked call to addElement(E) as a member of the raw type Vector
                newRow.addElement(rs.getObject(i));
  where E is a type-variable:
    E extends Object declared in class Vector

C:\Documents and Settings\Totet\My Documents\NetBeansProjects\DCWD_DepreciationMonitoringSystem\src\DCWDDMS\frmMain.java:351: 
warning: [unchecked] unchecked call to addElement(E) as a member of the raw type Vector
                newRow.addElement(rs.getObject(i));
  where E is a type-variable:
    E extends Object declared in class Vector

C:\Documents and Settings\Totet\My Documents\NetBeansProjects\DCWD_DepreciationMonitoringSystem\src\DCWDDMS\frmNewItem.java:831: 
warning: [unchecked] unchecked call to addElement(E) as a member of the raw type DefaultComboBoxModel
                    model.addElement(resultList.getString(1));
  where E is a type-variable:
    E extends Object declared in class DefaultComboBoxModel

C:\Documents and Settings\Totet\My Documents\NetBeansProjects\DCWD_DepreciationMonitoringSystem\src\DCWDDMS\frmNewItem.java:833: 
warning: [unchecked] unchecked call to setModel(ComboBoxModel<E>) as a member of the raw type JComboBox
                cmbAccount.setModel(model);
  where E is a type-variable:
    E extends Object declared in class JComboBox

5 warnings

2 个答案:

答案 0 :(得分:4)

javac会愉快地适应给定的-source版本并生成-target兼容的类文件,但它无法知道您没有无意中使用了不适当的功能,除非您告诉它是JDK使用的。通常,IDE允许您在已安装的JDK版本中进行选择以降低风险。

附录:在NetBeans中,您可以在Java Platform中指定File > Project Properties > Library

附录:ComboBoxModel在Java 7中变得通用。当你的目标是1.6时,你需要安装相应的JDK。 NetBeans应该在启动时找到它并在Tools > Java Platforms

中显示它

附录:如果您选择定位Java 7,则会有一个相关示例here

答案 1 :(得分:4)

来源/二进制格式设置

以下是明确设置项目源和目标的明确方法。大多数情况下,一旦您在netbeans中设置项目特定的Java平台,就不需要摆弄它。

  1. 右键单击Project并选择Properties
  2. 选择来源
  3. 将源级别设置为6(源/二进制格式)
  4. 单击“确定”按钮。
  5. 不安全操作警告

    我通常会忽略“不安全操作警告”。但是如果你想知道它为什么显示,请用-Xlint:unchecked选项重新编译(在上面的第5步),它将解释报告为什么和为什么不安全。

    Fedora中的UI问题

    在Fedora上检查你的路径,确保你没有运行默认的GNU Java运行时。

    转到命令行并输入

    java -version 看看它的回报。它必须返回Oracle的(sun)java信息。否则你将面临特别是Swing / UI的问题。