在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(应用程序)的兼容性?
当我在XP
和Ubuntu
中运行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
以显示上下文菜单时,Windows
但fedora
和Ubuntu
中没有正常工作。
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
答案 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平台,就不需要摆弄它。
不安全操作警告
我通常会忽略“不安全操作警告”。但是如果你想知道它为什么显示,请用-Xlint:unchecked
选项重新编译(在上面的第5步),它将解释报告为什么和为什么不安全。
Fedora中的UI问题
在Fedora上检查你的路径,确保你没有运行默认的GNU Java运行时。
转到命令行并输入
java -version
看看它的回报。它必须返回Oracle的(sun)java信息。否则你将面临特别是Swing / UI的问题。