1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Класс java.util.Scanner

Тема в разделе "Разработка плагинов для новичков", создана пользователем zuporsky, 8 мар 2016.

  1. Автор темы
    zuporsky

    zuporsky Активный участник Пользователь

    Баллы:
    61
    Помогите, пожалуйста!
    Только начал изучать Java, практически совсем не разбираюсь в классах, однако уже потребовалось срочно внести изменения в файл. Дело в том, что пытаюсь исходник лаунчера преобразовать сначала в файл.jar, а потом перекомпилировать его в файл.exe. Однако при запуске файл.exe в логах пишет, что созданный файл запуститься не может из-за ошибки в config.java.
    Файл.jar создаю в Eclipse IDE for Java Developers версия Mars.2 Release (4.5.2)
    Файл.exe создаю в Launch4j 3.8

    Лог Launch4j:
    Exception in thread "main" java.lang.NullPointerException
    at java.io.Reader.<init>(Unknown Source)
    at java.io.InputStreamReader.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at net.launcher.run.Config.<init>(Config.java:23)
    at net.launcher.run.Config.getInstance(Config.java:35)
    at net.launcher.run.Starter.main(Starter.java:13)

    Config.java:
    1 /*
    2 * To change this license header, choose License Headers in Project Properties.
    3 * To change this template file, choose Tools | Templates
    4 * and open the template in the editor.
    5 */
    6 package net.launcher.run;
    7
    8 import java.io.InputStream;
    9 import java.util.Scanner;
    10
    11 /**
    12 *
    13 * @author akahito
    14 */
    15 public class Config {
    16 private static Config instance;
    17 private ConfigData data;
    18 private Config(){
    19 System.out.println("Config.load");
    20 data = new ConfigData();
    21 InputStream stream = this.getClass().getResourceAsStream("/config");
    22 String line;
    23 try(Scanner sc = new Scanner(stream)) {
    24 while(sc.hasNext()) {
    25 line = sc.nextLine();
    26 line=line.trim();
    27 if(line.length()>1)
    28 data.put(line.substring(0, line.indexOf('=')), line.substring(line.indexOf('=')+1));
    29 }
    30 }
    31 }
    32
    33 public static synchronized Config getInstance() {
    34 if(instance == null)
    35 instance = new Config();
    36
    37 return instance;
    38 }
    39
    40 public ConfigData getData() {
    41 return data;
    42 }
    43 }

    Плюс в config.java использовался класс java.io.IOException, на который Eclipse "ругался" и требовал удалить. Из данного файла импорт этого класса удален.
    Помогите, кто разбирается в кодировке Java, пожалуйста
     
  2. Dereku

    Dereku Старожил Пользователь

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    > InputStream stream = this.getClass().getResourceAsStream("/config");
    Возможен NullPointerException.

    Его заворачивай тоже в try-catch. Или помещай его в try-catch вместе со Scanner'ом.

    Ну и в тот try докидывай catch, который ловит всё, т.е.
    ctach (Exception ex) {ex.printStackTrace();}
     
  3. Автор темы
    zuporsky

    zuporsky Активный участник Пользователь

    Баллы:
    61
    Сделал, как вы просили, теперь лог Launch4j выглядит таким образом:
    java.lang.NullPointerException
    at java.io.Reader.<init>(Unknown Source)
    at java.io.InputStreamReader.<init>(Unknown Source)
    at java.util.Scanner.<init>(Unknown Source)
    at net.launcher.run.Config.<init>(Config.java:23)
    at net.launcher.run.Config.getInstance(Config.java:36)
    at net.launcher.run.Starter.main(Starter.java:13)
    Exception in thread "main" java.lang.ExceptionInInitializerError
    at net.launcher.utils.BaseUtils.getConfigName(BaseUtils.java:95)
    at net.launcher.utils.BaseUtils.<clinit>(BaseUtils.java:39)
    at net.launcher.run.Starter.main(Starter.java:16)
    Caused by: java.lang.NullPointerException
    at net.launcher.run.ConfigData.getBoolean(ConfigData.java:21)
    at net.launcher.run.Settings.<clinit>(Settings.java:49)
    ... 3 more
    Я просто по неопытности не могу понять, в чем именно ошибка. Класс ли не определен, либо не догружена нужная библиотека... Не хватает знаний по этому вопросу
    P.S. Строку InputStream stream = .... на try-catch не проверял, там нужно правильно выставить синтаксис, пытаюсь это сделать
     

Поделиться этой страницей