Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by zuporsky, Mar 8, 2016.

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

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

    Trophy Points:
    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. Хостинг MineCraft
    <
  3. Dereku

    Dereku Старожил

    Trophy Points:
    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();}
     
  4. Автор темы
    zuporsky

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

    Trophy Points:
    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 не проверял, там нужно правильно выставить синтаксис, пытаюсь это сделать
     

Share This Page