【问题标题】:masking pasword in eclipse IDE java by bypassing the eclipse bug for console.readPassword()通过绕过 console.readPassword() 的 Eclipse 错误在 Eclipse IDE java 中屏蔽密码
【发布时间】:2021-07-21 06:06:55
【问题描述】:

当我输入我的用户输入密码时,我试图掩盖密码,它必须是隐藏的或 *.我正在使用这个 readPassowrd 方法,它在 IDE 中执行任务时会出现空指针错误等问题,但对于命令行来说很好。 无论如何我只能在IDE中屏蔽密码。

这就是我下面的内容

char[] PASSWORD =console.readPassword("ENTER YOUR PASSWORD :");
log.info("Entered" + PASSWORD);

但我在 IDE 的控制台中得到 Exception in thread "main" java.lang.NullPointerException

有什么帮助吗?

【问题讨论】:

  • 哪个 Eclipse 错误?
  • @chrylis-cautiouslyoptimistic- 当您使用 readPassword() 运行程序时,线程“main”java.lang.NullPointerException 中的异常
  • 这不是 Eclipse 错误。
  • 好的@chrylis-cautiouslyoptimistic-

标签: java eclipse console passwords masking


【解决方案1】:

你可以试试这个:

Console cnsl = null;
  
try {
   // creates a console object
   cnsl = System.console();

   // if console is not null
   if (cnsl != null) {
      // read password into the char array
      char[] pwd = cnsl.readPassword("Password: ");
      
      // prints
      System.out.println("Password is: "+pwd);
   } 
   
} catch(Exception ex) {
   // if any error occurs
   ex.printStackTrace();      
}

正如here所描述的那样

【讨论】:

  • 这不起作用在控制台中没有打印出来,这是在 cmd 中而不是在 IDE 中完成的
【解决方案2】:

众所周知,java.io.Console 实际上并不总是可用,但这取决于您的运行时环境的实现。
通常,很难找到提供 Console 类实例的 IDE,这就是为什么您会得到 NullPointerException,因为当您使用 IDE 的“运行”命令启动应用程序时,System.console() 方法返回 null。 恐怕这不是 Eclipse 的问题,但 IntelliJ 和许多其他 IDE 也会发生这种情况。

就个人而言,如果我需要使用Console,我通常会通过终端启动应用程序,因为JVM通过java命令启动它总是返回一个java.io.Console的非空实例,所以你也可以测试readPassword 方法。
您可以通过右键单击应用程序的输出文件夹在 Eclipse 中启动终端,然后选择菜单“Show In -> Terminal”,然后您可以启动经典的“java”命令(希望您知道它是如何工作的):

> java -cp . <YourMainClass>

【讨论】:

  • 有解决办法吗?我知道它可以从终端工作
  • 不幸的是,使用IDE作为Eclipse根本不存在控制台,并且没有解决方法,我什至不知道是否存在构建控制台实例的插件。事实上,您也可以看到在 Eclipse 基金会论坛上打开了很多与该主题相关的帖子,答案总是一样的。恐怕你只能选择终端:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
  • 1970-01-01
  • 2014-09-19
  • 1970-01-01
  • 2012-07-31
  • 2021-04-16
  • 1970-01-01
相关资源
最近更新 更多