2015-01-29 1 views
0

Я разрабатываю игру (одну из моих первых ^^), но столкнулся с проблемой импорта свойств. Ниже я опубликовал все относительные файлы и проблему, с которой я столкнулся - если кто-нибудь знает, куда я ушел, и кто я могу это исправить, я был бы очень благодарен :)Не удалось прочитать значения конфигурации в java (null возвращено не значение)

~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~ Вот мой основной класс (в настоящее время только для тестирования)

package game; 

public class Main { 

    //Setup 
    static Settings settings = null; 

    public static void main(String args[]){ 
     System.out.println("Main Started"); 

     settings = new Settings(); 
     String test = settings.getProperty("test"); 
     String hello = settings.getProperty("hello"); 

     System.out.println("Test: " + test); 
     System.out.println("Hello: " + hello); 
    } 

} 

~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Это класс настроек для загрузки настроек при вызове.

package game; 

//Imports 
import java.io.FileInputStream; 
import java.io.InputStream; 
import java.io.IOException; 
import java.util.Properties; 

public class Settings { 
    Properties config = new Properties(); 
    InputStream input = getClass().getClassLoader().getResourceAsStream("config.properties"); 

    public Settings(){ 
     System.out.println(); 

    } 

    public String getProperty(String key){ 
     String value = config.getProperty(key); 
     return value; 
    } 

    public int getValue(String key){ 
     int value = Integer.parseInt(config.getProperty(key)); 
     return value; 
    } 

    public void close(){ 
     try { 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~

Это файл свойств (.properties)

#Test Strings 
test = "this is a test" 
hello = "Hello, World." 

#Resolution Settings 
width = 800 
height = 600 
scale = 1 

#Cars 
speed = 1 
cars = 1 

~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~

Это консоль, где возвращается нуль

Main Started 

Test: null 
Hello: null 

Спасибо за чтение !!! Я надеюсь, что вы можете помочь :)

+0

Я не вижу, что вы устанавливаете переменную 'config' (кроме нового объекта' Properties'), но это предположительно, откуда вы получаете свойства. Возможно, поэтому они «нуль». – DaaaahWhoosh

+0

Проверьте расположение файла config.properties. Надеюсь, вы уже положили это в нужное место и смогли прочитать файл. – pratikch

ответ

1

Вы должны загрузить ресурс правильно для config и input когда первоначальный ваш Settings объект, например:

public class Settings { 

    Properties config = new Properties(); 
    InputStream input = null; 

    public Settings(){ 
     input = getClass().getClassLoader().getResourceAsStream("config.properties"); 
     // or use input = new FileInputStream("config.properties"); 
     config.load(input) 
    } 

    .... // other of your functions 
} 

И я думаю, имя файла свойств должно стать параметром для повышения гибкость Settings класса, напр:

public Settings(String filename){ 
    input = getClass().getClassLoader().getResourceAsStream(filename); 
    // or use input = new FileInputStream(filename) 
    config.load(input) 
} 

и Main:

public static void main(String args[]){ 
    System.out.println("Main Started"); 

    settings = new Settings("config.properties"); 
    String test = settings.getProperty("test"); 
    String hello = settings.getProperty("hello"); 

    // say you have another properties named config2.properties to read 
    Settings another_settings = new Settings("config2.properties"); 
    String xxx = settings.getProperty("xxx"); 
    String yyy = settings.getProperty("yyy"); 
} 
+1

Я сделал это сейчас, спасибо за ваш ответ - это был мой первый пост, настолько хороший, чтобы знать, насколько полезны ваши ребята :) – bph

+0

@CoranH Вы можете принять мой ответ, если это поможет: p –

Смежные вопросы