проблемы с java.lang.NullPointerException

У меня проблема с моей программой. Я хотел бы иметь доступ к хранилищу ключей, пользователь дает пропуск и путь. мой код:

public class cipher_player {

    public static void main(String[] args) throws Exception{    

        KeyStore klucz = KeyStore.getInstance("JCEKS");

        Console konsola = System.console();
        char passwordArray[] = konsola.readPassword("Password: ");

        java.io.FileInputStream plik_keystore = null;

        try{
            Scanner scanner = new Scanner(System.in);
            System.out.print("Path to keystore: ");
            String pathArray = konsola.readLine();
            System.out.print(pathArray);
            plik_keystore = new java.io.FileInputStream(pathArray);
            klucz.load(plik_keystore, passwordArray);
            if(plik_keystore != null){
                plik_keystore.close();
            }
            scanner.close();

        }

        catch(FileNotFoundException e)
        {
            System.out.println("Keystore not found");
            System.exit(0);
        }

    }
}

и когда я запускаю его, отображаю эту ошибку

Exception in thread "main" java.lang.NullPointerException
    at crypto3.cipher_player.main(cipher_player.java:47)

его линия с char passwordArray[] = konsola.readPassword("Password: ");

Я понятия не имею, как решить эту проблему.


person user3084640    schedule 23.03.2014    source источник
comment
konsola пуста — загляните в свою программу, чтобы понять, почему. Ваша система может не поддерживать консоль. Не каждая система делает.   -  person Hovercraft Full Of Eels    schedule 23.03.2014
comment
Вы запускаете этот код через IDE (Eclipse, NetBeans, IntelliJ)? Если это так, то даже если ваша система поддерживает консоль, тогда, если ваш код запускается через javaw.exe (вариант без консоли, по умолчанию в IDE), вы также получите нуль в результате System.console().   -  person Pshemo    schedule 23.03.2014
comment
В этой строке есть только одно значение, которое может быть нулевым и вызывать вашу проблему — konsola.   -  person Hot Licks    schedule 23.03.2014


Ответы (2)


Ваш системный объект не вернет допустимый объект консоли. Не все это позволяют.

В соответствии с системным API:

Возвращает уникальный объект Console, связанный с текущей виртуальной машиной Java, если есть.
Возвращает:
системную консоль, если есть, в противном случае null. <emphasis mine>

person Hovercraft Full Of Eels    schedule 23.03.2014

Вероятно, вы пытаетесь запустить приложение из IDE, поэтому System.console() возвращает значение null. Попробуйте запустить приложение из командной строки.

person apangin    schedule 23.03.2014