簡體   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