【问题标题】:Java - Eclipse IDE throwing warnings and errors but the same errors do not appear in NetbeansJava - Eclipse IDE 抛出警告和错误,但 Netbeans 中没有出现相同的错误
【发布时间】:2014-05-16 22:44:39
【问题描述】:

我正在尝试创建一个小程序来替换我的 ActiveX 控件,因为它最近开始出现问题,尽管它已经工作了多年。所有这一切都是从串行端口读取数据,在我的例子中是条形码扫描仪,并将数据传递到输入框。也非常感谢任何关于我可以使它变得更好的方法的指针。

代码:

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

Eclipse 引发的警告:

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 控件的问题越来越多。

【问题讨论】:

标签: java eclipse netbeans applet jssc


【解决方案1】:

Eclipse 的编译器有很多其他编译器可能有也可能没有的可配置警告和错误。一般来说,默认设置是相当合理的,如果可能,您应该尝试修复它们。使用快速修复功能可以轻松修复许多问题:右键单击标记(或问题)视图中的错误并选择快速修复...。

或者,您可以右键单击错误或警告所在代码中的下划线(黄色或红色),然后选择快速修复...

并非每个警告/错误都可以快速修复,但很多都可以。

如果您想禁用特定的警告或错误,请右键单击您的项目并打开“属性”对话框。在那里,查看 Java Compiler > Errors/Warnings 以找到所有可配置的。您必须启用项目特定设置,除非您希望将相同的设置应用于工作区中的所有项目。

【讨论】:

  • 感谢您的详细解释!
【解决方案2】:

当您创建可序列化对象而不指定序列版本 ID 时,Eclipse 通常会在 ServialVersionUID 周围引发警告。 拥有序列版本 ID 是一种最佳实践,而不是严格的要求,并且不同的 IDE 对此的行为不同。可以在此处找到有关您可能需要它的更多信息。请注意:这应该是警告,而不是错误。如果是警告,有三种方法可以避免:

  • 让 Eclipse 为您生成一个默认 ID(它将生成 private static final long serialVersionUID = 1L;
  • 自己生成一个
  • 告诉 Eclipse 忽略警告(添加 @SuppressWarnings("serial") 注释)

关于另一个问题,那里有大量文献。 Here 是您可能想要阅读的链接。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 2021-04-07
    • 2016-11-11
    • 2013-05-17
    • 1970-01-01
    相关资源
    最近更新 更多