我想在我的java程序中从控制台读取密码。我用了
Console newConsole = System.console();
但是我可以在我的班级中声明和初始化控制台对象。 我收到一条错误消息
" the method console() is undefined for the type System" and " Console cannot be resolved or is not a type"
因此我认为我没有最新的java版本并使用
检查了我的java版本C:\>java -version
java version "1.7.0_21"
我发现我有java 1.7.0_21这是最新版本,但我仍然收到错误。有人可以帮我解决这个问题。
如果我不能使用System.console,那么我可以使用任何其他方法从控制台读取密码作为隐藏字符。
完整的代码:
import java.io.console;
public class Test {
public static void main(String[] args) {
Console newConsole = System.console();
}
}
我在 import java.io.console (无法解析java.io.console)和控制台 newConsole = System.console(); (方法console()未定义类型系统和控制台无法解析或不是类型)行。
答案 0 :(得分:1)
根据javadoc:
虚拟机是否具有控制台取决于底层平台以及虚拟机的调用方式。 如果从交互式命令行启动虚拟机而不重定向标准输入和输出流,则其控制台将存在,并且通常将连接到启动虚拟机的键盘和显示器。如果虚拟机是自动启动的,例如后台作业调度程序,那么它通常没有控制台。
答案 1 :(得分:1)
您希望import java.io.Console
代替import java.io.console
。
import java.io.Console;
public class Test {
public static void main(String[] args) {
Console newConsole = System.console();
}
}
这应该让它编译,但我发现System.console()会在IDE中返回null
并检查this link。
答案 2 :(得分:0)
只是想添加来自错误导入的错误
error: The import java.io.console cannot be resolved
import java.io.console;
error: Console cannot be resolved to a type
Console console = System.console();
通过修正建议的拼写错误
import java.io.Console;
public class Test {
public static void main(String[] args) {
Console newConsole = System.console();
}
}
不会解决其他问题,即
方法console()未定义类型System“和”控制台无法解析或不是类型“
我意外地在Kubuntu 14.04中使用预先安装的javac
编译器实现此错误
gcj-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
并且该编译器是导致上述问题的编译器。
当我意识到我 实际上正在使用JDK包中的javac
并输入以编译
$JAVA_HOME/bin/javac
这实际上有效,因为该编译器实际上来自我安装的JDK,而不是导致错误的GNU Java Compiler
我无法在GNU编译器中找到有关包的快速信息,但我知道在某些版本中他们在某些版本中没有System.console()
。
这个问题现在很有胡子,并且可能在新版本中不会出现此错误。
但我确信错误method console is undefined
不是因为import
错误或拼写错误而是因为编译器不知道在哪里找到System.console()
方法。
虽然java
版本已打印并且看起来正确
C:> java -version java版“1.7.0_21”
它是什么java
版本并不重要,而是使用编译器javac
编译