Foro sobre Java SE > System.console() NullPointerException
¿En qué línea de código te lanza ese NPE?
Vale, me respondo ya que al final he conseguido que me funcione aunque no sabría decir donde estaba el error.
Este es el método que me causaba el NullPointerException:
//Metodo solicitar nombre usuario y contraseña MOLÓN
public String[] solicitarCredencialesEnmascaradas() {
try (Scanner entrada = new Scanner(System.in)) {
System.out.println("Introduce tu nombre de usuario de steam:");
credenciales[0] = entrada.nextLine();
}
Console cons = System.console();
if (cons != null) {
char[] passwd = cons.readPassword("Introduce tu contraseña de steam: ");
credenciales[1] = passwd.toString();
}
else {
throw new RuntimeException("Excepción al utilizar la consola");
}
return credenciales;
}
Y este otro es el nuevo que si que funciona:
public String[] solicitarCredenciales2() {
Console cons = System.console();
Scanner scan = new Scanner(System.in);
System.out.println("Escribe tu nombre de usuario: ");
String nombre = scan.nextLine();
char[] passwd = cons.readPassword("Escribe tu contraseña: ");
String password = passwd.toString();
credenciales[0] = nombre;
credenciales[1] = password;
return credenciales;
}
Ahora bien, me captura la contraseña y la convierte y retorna correctamente pero sin embargo me surge otro problema y es que al parecer la codificación de caracteres de la consola no se corresponde. Es decir introduzco 'tripichurla' y me devuleve '[C@454322ba'. Maldita sea!
El error me saltaba siempre al solicitar que ingresara el password y me indicaba la linea de dentro del 'else' throw new RuntimeException("Excepción al utilizar la consola");
Vale, debo de sufrir cierto retraso o algo. El caso es que ya me he dado cuenta de otro fallo mío.
Lo que comentaba anteriormente de que la entrada por consola al parecer se realizaba con una codificación de caracteres bizarra no es tal cosa sino que por lo visto al utilizar el método .toString() sobre el array de caracteres me los convertía de una manera extraña y resultaba en algo ininteligible. He recorrido el Array con un System.out.print y efectivamente si que está bien escrito. Ahora veré de que manera pasarlo a String sin cargármelo.
Grácias por aguantarme :D
La mejor manera de convertir un array a String se realiza usando Arrays.toString
Saludos,
Llevo un tiempo intentado capturar la entrada de una contraseña desde cmd.exe en un programa java (fragmento de codigo):
Console cons = System.console();
if (cons != null) {
char[] passwd = cons.readPassword(“Introduce tu contraseña: “);
credenciales[1] = passwd.toString();
}
Sería lógico que me mande un NullPointerException si lo ejecuto desde NetBeans pero el caso es que lo ejecuto desde cmd en windows7 con java 1.7 (java -jar miBot.jar) y me sigue dando NullPointerException. Alguna idea?¿