Java-EclipseIDE抛出警告和错误,但相同的错误不会出现在Netbeans中
我正在尝试创建一个小程序来替换ActiveX控件,因为它最近开始出现问题,尽管它已经工作了多年。所有这些都将从串行端口读取数据,在我的例子中是条形码扫描仪,并将数据传递到输入框。此外,任何关于我可以使之更好的方法的建议都将不胜感激 代码:Java-EclipseIDE抛出警告和错误,但相同的错误不会出现在Netbeans中,java,eclipse,netbeans,applet,jssc,Java,Eclipse,Netbeans,Applet,Jssc,我正在尝试创建一个小程序来替换ActiveX控件,因为它最近开始出现问题,尽管它已经工作了多年。所有这些都将从串行端口读取数据,在我的例子中是条形码扫描仪,并将数据传递到输入框。此外,任何关于我可以使之更好的方法的建议都将不胜感激 代码: package checkin; import jssc.SerialPort; import jssc.SerialPortException; import jssc.SerialPortEvent; import jssc.SerialPortEven
package checkin;
import jssc.SerialPort;
import jssc.SerialPortException;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import netscape.javascript.*;
import java.applet.Applet;
public class MainSerial extends Applet {
static SerialPort port;
static JSObject window;
public static void main(String[] args) { //WARNING
SerialPort port = new SerialPort("COM1");
try {
port.openPort();
port.setParams(9600, 8, 1, 0);
int mask = SerialPort.MASK_RXCHAR + SerialPort.MASK_CTS + SerialPort.MASK_DSR;
port.setEventsMask(mask);
port.addEventListener(new SerialPortReader()); //ERROR
} catch (SerialPortException ex) {
window.eval("alert('Could not open port.\nThe port may be in use by another program.')");
}
}
class SerialPortReader implements SerialPortEventListener {
public void serialEvent(SerialPortEvent event) {
if(event.isRXCHAR()) {
try {
byte buffer[] = port.readBytes();
int x = 0;
int count = buffer.length;
StringBuilder data = new StringBuilder();
while(x < count) {
data.append(buffer[x]);
x++;
}
window.eval("getSerialData('" + data.toString() + "')");
} catch (SerialPortException ex) {
window.eval("alert('Port could not be read.')");
}
}
}
}
Eclipse引发的警告:
The serializable class MainSerial does not declare a static final serialVersionUID field of type Long
No enclosing instance of MainSerial is accessible. Must qualify the allocation with an enclosing instance of type MainSerial.
这是我第一次尝试Java,请原谅我的无知。对我来说没有意义的是,为什么我在Eclipse中看到这些错误而在NetBeans中看不到?另外,如果
port.addEventListener(new SerialPortReader());
在那个特定的父对象中,我为什么需要重新初始化它?我肯定我错过了一些小的东西,可能很明显,但任何帮助都是非常感谢的。我试图创建小程序的原因是我的ActiveX控件出现了越来越多的问题。Eclipse的编译器有许多可配置的警告和错误,其他编译器可能有,也可能没有。一般来说,默认设置是相当合理的,如果可能,您应该尝试修复它们。使用快速修复功能可以轻松修复许多错误:右键单击标记(或问题)视图中的错误,然后选择快速修复…。 或者,您可以右键单击错误或警告所在代码中的下划线(黄色或红色),然后选择快速修复…。 并非每个警告/错误都有快速修复方法,但许多警告/错误都有 如果要禁用特定警告或错误,请右键单击项目并打开“属性”对话框。在那里,在Java编译器错误/警告下查找所有可配置的错误/警告。除非希望将相同的设置应用于工作区中的所有项目,否则必须启用特定于项目的设置
Eclipse通常会在创建可序列化对象而不指定串行版本ID时,在
servialVersionID
周围抛出警告。
拥有串行版本ID是一种最佳实践,而不是严格的要求,不同的IDE在这方面的表现也不同。更多关于你为什么想要它的信息可以在这里找到。请注意:这应该是一个警告,而不是一个错误。如果是警告,有三种方法可以避免:
- 要求Eclipse为您生成一个默认ID(它将生成
)private static final long serialVersionUID=1L;
- 自己生成一个
- 告诉Eclipse忽略警告(添加
注释)@SuppressWarnings(“串行”)
希望这有帮助。可能重复的,因为我有不止一个问题,我不明白这怎么会是该线程的重复。不过,谢谢你的发帖,因为它确实解释了我丢失的一篇文章。谢谢你的详细解释!