繁体   English   中英

无法运行jar文件?

[英]Can't run jar file?

我是java的新手,所以我可能会遗漏一些明显的东西。 我正在尝试用java创建一个简单的命令行游戏。 我使用两个类:

http://pastebin.com/wRgqgJQP

http://pastebin.com/0rXbxdiJ

第一个处理用户输入,第二个运行数学问题游戏。 当我尝试运行jar文件(eclipse文件运行正常)时,我收到错误 - 无法启动,并打开以下控制台:

Exception in thread "main" java.lang.NullPointerException
at game.GameHelper.getUserInput(GameHelper.java:12)
at game.MultGame.createGame(MultGame.java:18)
at game.MultGame.main(MultGame.java:12)

任何想法如何解决这一问题? 我在想这个问题与使用sysout打印的东西有关......但我不确定。 谢谢!

NullPointerException指示当与a一起使用时变量为null . 或类似[0]的数组引用。

堆栈跟踪告诉我们它发生在“game.GameHelper.getUserInput(GameHelper.java:12)”。 您的源列表在GameHelper的第12行有此行。

if (inputLine.length() == 0)

只有一个. 告诉我们inputLinenull 那是怎么发生的? 好吧,它是在第11行分配的。

inputLine = is.readLine();

所以。 readLine()返回null。 那是怎么发生的? 那么,来自http://download.oracle.com/javase/1.4.2/docs/api/java/io/BufferedReader.html#readLine ()

返回:包含行内容的String,不包括任何行终止字符;如果已到达流的末尾,则返回null

所以已经达到了流的结尾。 该流是从System.in构建的,因此需要其他信息来说明可能的原因。

调试任何nullpointerexception的方法

1)去线。 2)查看该行上的每个方法调用 - 是否有可能在对象为null的对象上调用该方法?

a=null ;
a.setX("X");

will result in a null pointer exception.  

在您的特定情况下,行“if(inputLine.length()== 0)”抛出空指针异常。 因此,您应该确保“inputLine”不为null ....

您没有使用Scanner类的任何特殊原因?

package game;
import java.util.Scanner;
public class GameHelper {
    public String getUserInput(String prompt)
    {
        System.out.print(prompt + "  ");
        Scanner scan = new Scanner(System.in);
        String inputline = scan.nextLine();
        return inputLine.toLowerCase();
    }
}

如果你想要它做的就是将结果用于ParseInt,你可以改变

String inputLine = scan.nextLine()

int inputNumber = scan.nextInt()

并且显然将返回类型从String更改为int

尝试这个

package game;
import java.io.*;
public class GameHelper {

    public String getUserInput(String prompt) {
        String inputLine = null;
        System.out.print(prompt + "  ");
        try {
            BufferedReader is = new BufferedReader(new InputStreamReader(
                    System.in));
            inputLine = is.readLine();
            if (inputLine == null)
                return null;
        } catch (IOException e) {
            System.out.println("IOException: " + e);
        }
        return inputLine.toLowerCase();
    }


}

修复你的其他错误环绕声

 numProbs=(Integer.parseInt(numProbsReader))

在try / catch中就是这样

try{
 numProbs=(Integer.parseInt(numProbsReader))
}catch(Exception e){System.err.println("Invalid Input");}

这应该有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM