java - MIDLet 中的 nullPointerException

标签 java java-me nullpointerexception midp midlet

我编写了以下 Java 应用程序:

import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.midlet.MIDlet;


public class JavaApplication6 extends MIDlet
{
private static Form clockForm=null;
private static StringItem clockItem=new StringItem("hello", "World!");
private static ClockTask task=null;
private static Timer timer=null;

static class ClockTask extends TimerTask 
{
private int count=0;
        @Override
public void run()
{
count++;
clockItem.setText("hello "+count);
}
}
public static  void JavaApplication6() throws Exception
{
clockForm=new Form("Clock");
clockItem=new StringItem("","0");
clockForm.append(clockItem);
}

    @Override
public  void startApp()
{
task=new ClockTask();
timer=new Timer();
timer.schedule(task,1000,1000);
Display.getDisplay(this).setCurrent(clockForm);}

    @Override
public void pauseApp()
{}

public void destroyApp(boolean unconditional)
{}


    public static void main(String[] args) {


        JavaApplication6 test=new JavaApplication6();
        test.startApp();



    }
}

但是当我运行它时,它在 startApp() 的最后一行给我以下 exception;

Exception in thread "main" java.lang.NullPointerException
    at javax.microedition.lcdui.Display.<init>(Display.java:420)
    at javax.microedition.lcdui.Display.getDisplay(Display.java:447)
    at javaapplication6.JavaApplication6.startApp(JavaApplication6.java:42)
    at javaapplication6.JavaApplication6.main(JavaApplication6.java:56)

最佳答案

您创建了名为 JavaApplication6 的静态方法,因为它是构造函数。但事实并非如此。因此,当您说 JavaApplication6 test=new JavaApplication6(); 时,它不会被调用。因此 clockForm 保持未初始化状态,即 null。所以,行

Display.getDisplay(this).setCurrent(clockForm);

抛出 NPE,因为此时 clockFormnull

解决方案是从 public static void JavaApplication6() throws Exception 行中删除 static void。它应该看起来像

public JavaApplication6() 抛出异常

在这种情况下,它成为构造函数,一切都会正常工作。

祝你好运。

关于java - MIDLet 中的 nullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10569761/

相关文章:

java - 如何修复 ViewHolder 上的 "NullPointerException"?

java - 为什么一个地方的原始类型会导致其他地方的通用调用站点被视为原始类型?

java - MYSQL 查询查找值

java - 在 Ubuntu 19.10 中找不到 Oracle JDK 8 Keytool

java - 我可以分层 JavaFX 控件吗?

安卓.view.InflateException : Binary XML file line #28: Error inflating class fragment

Java MVC - 感觉我不明白

java - 在 Mac OSX 下开发 CLDC 或 J2ME 应用程序?

android - 如何访问我放在 res 文件夹中的原始资源?

java - 在java中使用ArrayList.get()出现NullPointerException