Java 无法在gitbash终端中使用char[]password=cons.readPassword运行密码屏蔽

Java 无法在gitbash终端中使用char[]password=cons.readPassword运行密码屏蔽,java,git-bash,masking,Java,Git Bash,Masking,您好,我正在尝试使用char[]password=cons.readPassword()运行此程序进行密码屏蔽 但它给了我 Exception in thread "main" java.lang.NullPointerException at automateCFOSetup.App.main(App.java:32) 当我在git bash终端运行程序时。但当我在Windows cmd上运行它时,它运行得很好…这是什么原因造成的,因为我只知道在IDE中运行时获取

您好,我正在尝试使用char[]password=cons.readPassword()运行此程序进行密码屏蔽 但它给了我

Exception in thread "main" java.lang.NullPointerException
    at automateCFOSetup.App.main(App.java:32)
当我在git bash终端运行程序时。但当我在Windows cmd上运行它时,它运行得很好…这是什么原因造成的,因为我只知道在IDE中运行时获取这个空指针的问题 这是我的密码 扫描仪扫描=新扫描仪(System.in); Console cons=System.Console()


有关此功能的任何帮助?

控制台不保证支持此功能。考虑到您遇到了异常情况,您在这里使用的特定控制台(您的IDE和我并不感到惊讶,因为某些原因,这些“控制台”通常不支持此操作),不支持密码输入

没有解决办法。但有一些变通办法:

  • 您可以捕获异常并告诉用户:运气不好-没有人能做到
  • 你可以抓住它,然后决定,不管怎样,用通常的技巧(
    scanner.nextLine()
    )提问。可能会警告用户他们的pw将被回响。当然,“在IDE中运行”并不是你打算如何部署你的软件,所以这并不是一个很大的安全问题(如果这个应用程序在私人开发者的笔记本电脑上使用,通常那些已经包含了很多信息,比如代码本身、git密钥等——如果这个设备被破坏,你已经有了更大的问题)
  • 根本不要在控制台上询问,而是使用PKI从其他地方(例如文件)获取密码。你知道,密码是如此的珍贵
  •     log.info("ENTER YOUR ID :");
        String SOEID = scan.nextLine();
        
        char[] PASSWORD =cons.readPassword("ENTER YOUR PASSWORD :");
        scan.close();