Файл свойства Java не найден при запуске в командной строке [дубликат]

вам нужно добавить класс [System.Serializable] в PlayerItem, например:

using System;
[System.Serializable]
public class PlayerItem   {
    public string playerId;
    public string playerLoc;
    public string playerNick;
}
103
задан Joachim Sauer 28 August 2012 в 21:21
поделиться

9 ответов

Чтобы добавить к ответу Йоахима Зауэра, если вам когда-либо понадобится сделать это в статическом контексте, вы можете сделать что-то вроде следующего:

static {
  Properties prop = new Properties();
  InputStream in = CurrentClassName.class.getResourceAsStream("foo.properties");
  prop.load(in);
  in.close()
}

(Обработка исключений прошла, как и раньше.)

220
ответ дан Eric Leschinski 22 August 2018 в 03:45
поделиться
  • 1
    я думаю, второй фрагмент - ответ на вопрос. – Satya 2 December 2008 в 09:58
  • 2
    Предложение: добавьте объяснение, когда использовать относительные и когда использовать абсолютные пути (с и без «/» в начале). – Aaron Digulla 2 December 2008 в 10:06
  • 3
    Я попытался дать какое-то объяснение. – Joachim Sauer 2 December 2008 в 10:13
  • 4
    что, если ваш файл свойств находится за пределами каталога src, но все еще внутри вашего директора проекта? – jonney 16 May 2012 в 15:24
  • 5
    Это ответ, который сработал для меня. Я не мог принять принятый ответ на работу. – Steve HHH 12 September 2012 в 17:57
  • 6
    @jonney: у самой Java нет понятия «каталог проекта», некоторые IDE могут иметь это. Но что касается Java, то это просто файл где-то в файловой системе, не имеющий никакого отношения к пути к классам. – Joachim Sauer 25 April 2013 в 14:35
  • 7
    @cobralibre, как читать файл свойств, который находится в папке resources в проекте maven – Kasun Siyambalapitiya 27 April 2017 в 05:45
223
ответ дан Eric Leschinski 5 November 2018 в 03:00
поделиться

Никто не упоминает подобное, но даже более простое решение, чем выше, без необходимости иметь дело с пакетом класса. Предполагая, что myfile.properties находится в пути к классам.

        Properties properties = new Properties();
        InputStream in = ClassLoader.getSystemResourceAsStream("myfile.properties");
        properties.load(in);
        in.close();

Наслаждайтесь

0
ответ дан isaac.hazan 22 August 2018 в 03:45
поделиться

Следующие два случая относятся к загрузке файла свойств из класса example с именем TestLoadProperties.

Случай 1: Загрузка файла свойств с помощью ClassLoader

InputStream inputStream = TestLoadProperties.class.getClassLoader()
                          .getResourceAsStream("A.config");
properties.load(inputStream);

В этом случае файл свойств должен быть в каталоге root/src для успешной загрузки.

Случай 2: загрузка файла свойств без использования ClassLoader

InputStream inputStream = getClass().getResourceAsStream("A.config");
properties.load(inputStream);

В этом случае файл свойств должен находиться в том же каталоге, что и файл TestLoadProperties.class для успешной загрузки.

Примечание: TestLoadProperties.java и TestLoadProperties.class - два разных файла. Первый файл .java обычно находится в каталоге src/ проекта, а последний файл .class обычно находится в каталоге bin/.

13
ответ дан Jonny Henly 22 August 2018 в 03:45
поделиться
public class ReadPropertyDemo {
    public static void main(String[] args) {
        Properties properties = new Properties();

        try {
            properties.load(new FileInputStream(
                    "com/technicalkeeda/demo/application.properties"));
            System.out.println("Domain :- " + properties.getProperty("domain"));
            System.out.println("Website Age :- "
                    + properties.getProperty("website_age"));
            System.out.println("Founder :- " + properties.getProperty("founder"));

            // Display all the values in the form of key value
            for (String key : properties.stringPropertyNames()) {
                String value = properties.getProperty(key);
                System.out.println("Key:- " + key + "Value:- " + value);
            }

        } catch (IOException e) {
            System.out.println("Exception Occurred" + e.getMessage());
        }

    }
}
7
ответ дан Martijn Pieters 22 August 2018 в 03:45
поделиться

Мне удалось решить эту проблему с помощью этого вызова

Properties props = PropertiesUtil.loadProperties("whatever.properties");

Extra, вы должны поместить свой файл whatever.properties в / src / main / resources

1
ответ дан Naramsim 22 August 2018 в 03:45
поделиться

используйте приведенный ниже код, пожалуйста:
    Properties p = new Properties(); 
    StringBuffer path = new StringBuffer("com/al/common/email/templates/");
    path.append("foo.properties");
    InputStream fs = getClass().getClassLoader()
                                    .getResourceAsStream(path.toString());

if(fs == null){ System.err.println("Unable to load the properties file"); } else{ try{ p.load(fs); } catch (IOException e) { e.printStackTrace(); } }

-2
ответ дан Prithvish Mukherjee 22 August 2018 в 03:45
поделиться

Предполагая, что вы используете класс Properties , используя его метод load , и я предполагаю, что вы используете ClassLoader getResourceAsStream , чтобы получить входной поток ,

Как вы передаете имя, кажется, должно быть в этой форме: /com/al/common/email/templates/foo.properties

2
ответ дан Sumit Singh 22 August 2018 в 03:45
поделиться
public class Test{  
  static {
    loadProperties();
}
   static Properties prop;
   private static void loadProperties() {
    prop = new Properties();
    InputStream in = Test.class
            .getResourceAsStream("test.properties");
    try {
        prop.load(in);
        in.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

}
10
ответ дан user897493 22 August 2018 в 03:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: