Java serialversionUID警告:无法打印到屏幕

时间:2015-01-07 16:12:26

标签: java applet

我开始学习java并完成教程,但是在尝试制作数字时钟动画时遇到了问题。代码是:

import java.awt.Graphics;
import java.awt.Font;
import java.util.Date;

public class DigitalClock extends java.applet.Applet {

  Font theFont = new Font("Helvetica",Font.BOLD,24);
  Date theDate;

  public void start() {
    while (true) {
      theDate = new Date();
      repaint();
      try {Thread.sleep(1000); }
      catch (InterruptedException e) { }
    }
  }

  public void paint(Graphics g) {

    g.setFont(theFont);
    g.drawString(theDate.toString(),10,50);
  }
}

我正在使用以下方式查看小程序:

<HTML>
<HEAD>
<TITLE>This page has an applet on it</TITLE>
</HEAD>
<BODY>
<P>Digital Clock:
<BR>
<APPLET CODE = "DigitalClock.class" WIDTH=300 HEIGHT=100>
</APPLET>
</BODY>
</HTML>

我正在编译:     javac DigitalClock.java -Xlint

提供警告(无错误):

    DigitalClock.java:10: warning: [serial] serializable class DigitalClock has no definition of serialVersionUID
public class DigitalClock extends java.applet.Applet {

动画根本没有出现(小程序打开但窗口中没有任何内容)。我假设这与警告有关,虽然从一些研究中,我认为这意味着该课程没有被正确调用,但我不明白为什么会这样。

请注意:这是我在java工作的第一周,我非常基础!

提前感谢您提供任何建议。

3 个答案:

答案 0 :(得分:0)

添加以下行:

private static final long serialVersionUID = 1L;

在一切之前。那应该摆脱警告。

答案 1 :(得分:0)

警告可以忽略,不是不可视化applet的原因。解决警告包括:

private static final long serialversionUID = 1L; 

今天所有浏览器都不支持applet标记,请检查http://www.w3schools.com/TAgs/tag_applet.asp,因此请务必使用兼容的标记。同时在宽度和高度值中加上引号,如下所示:

<APPLET CODE = "DigitalClock.class" WIDTH="300" HEIGHT="100">

答案 2 :(得分:0)

这里有两个不同的问题。

首先是您的警告:它告诉您没有serialVersionUID,如果您想通过互联网传输班级实例,那么这只是一个ID。将此行添加到类的开头,这应该消失:

 private static final long serialVersionUID = 1L;

您的第二个问题是您使用的是Chrome中不支持的标记,并且在HTML5中并不标准,这意味着它很快就会消失。请尝试使用<object>

可能导致其无法显示的原因是您在while(true)方法中有start()这一事实。虽然我不熟悉这些内容的工作方式,但您可能希望将其移至another thread中的单独方法,以免它阻止start()方法完成,这可能反过来阻止它渲染。

最好保持将渲染时间与渲染时间分开的方法更好,因为如果你的渲染滞后,你就不希望时间停止计算直到它恢复。即使渲染停止了几分钟,你的时钟应该是准确的,因为这就是时钟的工作原理。