Получение файла в качестве ресурса на classpath - PullRequest
1 голос
/ 11 марта 2019

Я пытаюсь прочитать хранилище ключей как ресурс. Пример кода ниже. Проблема, с которой я сталкиваюсь, состоит в том, что inputStream остается нулевым.

import java.io.InputStream;

import java.util.List;

import org.linguafranca.pwdb.kdbx.KdbxCreds;
import org.linguafranca.pwdb.kdbx.simple.SimpleDatabase;
import org.linguafranca.pwdb.kdbx.simple.SimpleEntry;
import org.linguafranca.pwdb.Credentials;

import org.apache.log4j.Logger;



public class Security {

private static final String PATH = null;
private static final String KEYSTORE_PASSWORD = "admin";
static List<SimpleEntry> entries = null;

final static Logger logger = Logger.getLogger(Security.class);

public Security(){


    //TODO: initialize security and it's passwords


}

public static void init(){

try {

        //InputStream inputStream = new FileInputStream(".keePass.kdbx");
        InputStream inputStream = Security.class.getClassLoader().getResourceAsStream("keePass.kdbx");

        // password credentials
        Credentials credentials = new KdbxCreds(KEYSTORE_PASSWORD.getBytes());

        SimpleDatabase database = SimpleDatabase.load(credentials, inputStream);
        // Jaxb implementation seems a lot faster than the DOM implementation
        // visit all groups and entries and list them to console
        entries = database.getRootGroup().getEntries();

    }catch(Exception exception){
        logger.error(exception);
    }

}
}

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

enter image description here

Даже если я использую абсолютный путь, результат тот же.

Какую ошибку я совершаю?

1 Ответ

1 голос
/ 11 марта 2019

Когда вы используете getClassLoader().getResourceAsStream("..."), он пытается найти файл в корне classpath.Попробуйте использовать:

Security.class.getResourceAsStream("keePass.kdbx");

В этом случае он будет пытаться найти файл в том же месте, что и Security класс

Подробнее В чем разница между классом.getResource () и ClassLoader.getResource ()?

...