1

Javaプログラムの1つでコンソールからパスワードを読み取りたいです。使った

 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 を解決できません) および Console newConsole = System.console();でコンパイラ エラーが発生します。(console() メソッドは System 型に対して定義されておらず、Console を解決できないか、型ではありません) 行。

4

3 に答える 3

1

javadocによると:

仮想マシンにコンソールがあるかどうかは、基盤となるプラットフォームと、仮想マシンが呼び出される方法に依存します。標準入出力ストリームをリダイレクトせずに対話型コマンド ラインから仮想マシンを起動すると、そのコンソールが存在し、通常、仮想マシンを起動したキーボードとディスプレイに接続されます。たとえば、バックグラウンド ジョブ スケジューラによって仮想マシンが自動的に起動される場合、通常、仮想マシンにはコンソールがありません。

于 2013-08-13T03:28:39.783 に答える
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 に対して定義されていません" および " Console を解決できないか、タイプではありません"

実際にプリインストールされjavacたコンパイラを使用して、Kubuntu 14.04 でこのエラーが誤って動作することがあります。

gcj-4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4

そして、そのコンパイラは上記の問題を引き起こすものです。

JDKパッケージから実際に使用していないことに気づき、コンパイルするように入力したときjavac

$JAVA_HOME/bin/javac 

そのコンパイラは実際に私がインストールしたJDKからのものであり、エラーの原因となったGNU Java Compilerではないため、実際に機能しました

System.console()GNU コンパイラーのパッケージに関する迅速な情報を見つけることができませんでしたが、以前はいくつかのリリースに含まれていなかったことがわかっています。

hereからリダイレクトされたhereを見ることができます

質問は現在非常にひげを生やしており、新しいリリースではこのエラーは発生しない可能性があります。

しかしmethod console is undefinedimportエラーやタイプミスが原因ではなく、メソッドの場所がわからないコンパイラからエラーが発生していると確信していますSystem.console()

そして、javaバージョンが印刷され、正しいように見えますが

C:>java -version Java バージョン "1.7.0_21"

バージョンは関係ありませんが、コンパイルに使用されjavaたコンパイラは重要ではありませんjavac

于 2016-10-15T18:44:06.630 に答える