Работая с Java.io.file, когда я пытаюсь прочитать из него сертификат, он всегда указывает на неправильный путь

Я пытаюсь прочитать сертификат с файловым вводом-выводом каждый раз, когда я пытаюсь получить доступ к своему сертификату под

testApp/src/main/resources -> cert

это всегда читается

X:\workspace1\testApp\target\classes\cert\test.p12

И вот мой код, который я использую. Он всегда выдает исключения с нулевым указателем.

// String fileName = "config/sample.txt";
    ClassLoader classLoader = App2.class.getClassLoader();

    File file = new File(classLoader.getResource("cert/test.p12").getFile());
    FileInputStream fm = new FileInputStream(file);
    KeyStore ks = KeyStore.getInstance("PKCS12");
    try {
        ks.load(fm, "test".toCharArray());
    }
    catch(Exception e) {
        e.printStackTrace();
    }
    Key key = ks.getKey("test", "test".toCharArray());
    Certificate cert = ks.getCertificate("test");
    PublicKey publicKey = cert.getPublicKey();
    System.out.println("Public key");
    System.out.println(Base64.getEncoder().encodeToString(publicKey.getEncoded()));
    fm.close();

Я хочу прочитать этот сертификат, чтобы извлечь открытый или закрытый ключ.

Ресурсы - это не файлы. Используйте getResourceAsStream() и уберите все File* классы.

user207421 18.07.2019 11:07

NB Вам необходимо закрыть входной поток после использования.

user207421 18.07.2019 12:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

это сработало для меня

File file = new File(classLoader.getResource("./cert/test.p12").getFile());
classLoader.getResourceAsStream("./cert/test.p12") работало бы еще лучше, если бы не предположение, что это файл или File вообще.
user207421 25.02.2022 01:02

Другие вопросы по теме