Почему NetBeans 8.1 запускает проект прямо в редакторе, но когда я собираю его в банку, я получаю ошибки - PullRequest
0 голосов
/ 12 июня 2018

Я делаю игру на Java с использованием NetBeans, когда я запускаю ее в NetBeans, я получаю изображение, показывающее, как это ожидаемое поведение.Однако когда я компилирую проект в файл jar и запускаю его, я получаю белый экран и трассировку стека, если выполняется в терминале.Вот трассировка стека для банки.Я действительно не знаю, что делать, потому что я некоторое время искал ответ на этот вопрос, но ничего не нашел.Это все с URL-адресами к файлам, и они все правильные

java.io.FileNotFoundException: res\Worlds\world1.world (The system cannot find the path specified)
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileInputStream.<init>(Unknown Source)
        at java.io.FileReader.<init>(Unknown Source)
        at dev.DualKeys.SIF.utils.Utils.loadFileAsString(Utils.java:13)
        at dev.DualKeys.SIF.worlds.World.loadWorld(World.java:47)
        at dev.DualKeys.SIF.worlds.World.<init>(World.java:18)
        at dev.DualKeys.SIF.states.GameState.<init>(GameState.java:24)
        at dev.DualKeys.SIF.Game.init(Game.java:56)
        at dev.DualKeys.SIF.Game.run(Game.java:86)
        at java.lang.Thread.run(Unknown Source)
java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at java.lang.Integer.parseInt(Unknown Source)
        at dev.DualKeys.SIF.utils.Utils.parseInt(Utils.java:29)
        at dev.DualKeys.SIF.worlds.World.loadWorld(World.java:49)
        at dev.DualKeys.SIF.worlds.World.<init>(World.java:18)
        at dev.DualKeys.SIF.states.GameState.<init>(GameState.java:24)
        at dev.DualKeys.SIF.Game.init(Game.java:56)
        at dev.DualKeys.SIF.Game.run(Game.java:86)
        at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-0" java.lang.ArrayIndexOutOfBoundsException: 1
        at dev.DualKeys.SIF.worlds.World.loadWorld(World.java:50)
        at dev.DualKeys.SIF.worlds.World.<init>(World.java:18)
        at dev.DualKeys.SIF.states.GameState.<init>(GameState.java:24)
        at dev.DualKeys.SIF.Game.init(Game.java:56)
        at dev.DualKeys.SIF.Game.run(Game.java:86)
        at java.lang.Thread.run(Unknown Source)

Вот loadFileAsString из dev.DualKeys.SIF.utils.Utils

public static String loadFileAsString(String path) {
        StringBuilder builder = new StringBuilder();

        try {
            BufferedReader br = new BufferedReader(new FileReader(path));
            String line;
            while ((line = br.readLine()) != null) {
                builder.append(line + "\n");
            }

            br.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return builder.toString();
    }

и loadWorld из dev.DualKeys.SIF.worlds.World

private void loadWorld(String path) {
        String file = Utils.loadFileAsString(path);
        String[] tokens = file.split("\\s+");
        width = Utils.parseInt(tokens[0]);
        height = Utils.parseInt(tokens[1]);

        tiles = new int[width][height];
        for (int y = 0; y < height; y++) {
            for (int x = 0; x < width; x++) {
                tiles[x][y] = Utils.parseInt(tokens[(x + y * width) + 2]);
            }
        }
    }

1 Ответ

0 голосов
/ 12 июня 2018

Я предполагаю, что последние два исключения являются следствием первого: программа не может найти файл res\Worlds\world1.world.Поскольку программа использует FileInputStream, вы не можете включить файл в свой jar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...