java.io.コンソールの支援をEclipse IDE
質問
私は、Eclipse IDEの開発、コンパイル、実行っJavaプロジェクト.現在、私を利用しようと java.io.Console
を管理するクラス出力、さらに重要なことに、ユーザー入力します。
問題は System.console()
を返します null
に対応したアプリケーションが実行"から"Eclipse.Eclipseプログラムを背景に、よりトップレベルのプロセスのコンソールウィンドウを非表示に私たちの暮らしに身近なる。
があるので、力のEclipseプログラムを実行するとしてトップレベルの過程で、少なくとも作成コンソールのJVMを認識し?その他、強いjarのプロジェクト、実行コマンドライン環境を外部にはEclipse.
解決
思い利用できるように段階を通してデバッグからEclipse.できるだけで、授業の内部の設定のクラスのbinディレクトリのJRE classpath.
java -cp workspace\p1\bin;workspace\p2\bin foo.Main
できるデバッグ用のリモートデバッガとしてのメリットを活かせるクラスファイルを内蔵できます。
この例では、Eclipseのプロジェクトの構造は以下のようなものです:
workspace\project\
\.classpath
\.project
\debug.bat
\bin\Main.class
\src\Main.java
1.開始のJVMのコンソールにデバッグモード
debug.バット であるWindowsバッチファイルから実行されるものである外部からの cmd.exe ソフトである。
@ECHO OFF
SET A_PORT=8787
SET A_DBG=-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=%A_PORT%,server=y,suspend=y
java.exe %A_DBG% -cp .\bin Main
に引数のときは、デバッグポート設定されてい 8787.の suspend=y 引数によって、JVMでは、デバッガに付与す.
2.をデバッグ開始の設定
Eclipseのデバッグダイアログ(Run>オデバッグダイアログに...)および新規作成し リモートJavaアプリケーション 構成は、以下の設定:
- プロジェクト: プロジェクト名
- 接続タイプ: 標準(ソケット付)
- 主催: localhost
- ポート: 8787
3.デバッグ
なので、いいデバッグのアプリです:
- セットaブレークポイント
- 打上げのバッチファイルのコンソール
- のデバッグの構成
できますこの問題に バグ122429.作業できる丸のこの問題を利用したアプリケーション抽象化レイヤーに記載のとお こちらの.
他のヒント
の回避策としてお使いくだけを使用。でいるのですが......。出しの代わりにコンソール使用時はEclipse.例えば、代わりに:
String line = System.console().readLine();
利用できる:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String line = bufferedReader.readLine();
その理由が起こったeclipseを走るアプリとしてバックグラウンド処理としてではなくトップレベルのプロセスシステムソフトである。
できるクラスを実装す。以下の例です:
public class Console {
BufferedReader br;
PrintStream ps;
public Console(){
br = new BufferedReader(new InputStreamReader(System.in));
ps = System.out;
}
public String readLine(String out){
ps.format(out);
try{
return br.readLine();
}catch(IOException e)
{
return null;
}
}
public PrintStream format(String format, Object...objects){
return ps.format(format, objects);
}
}
たもので、この http://www.stupidjavatricks.com/?p=43 .
と悲してコンソールには、できません延を作成するラッパシステム。でいます。となります。内でも、eclipseのコンソールでもアクセスと変わらないことが分かった。ょうかeclipseな差こそコンソールな...
わかんないその他の取得、コンソール以外のシステム。コンソール、セッターがかわからないのはなぜだかよりお電話をいただければできるオーバーライドのクラスを模擬テストコンソール...
別のオプションを作成方法を包み込むように両方のオプションは、"失敗しめます。方法がコンソールな可能です。以下の例はかなりの基本につき同じプロセスを包み込むようにその他の方法でコンソール(readPassword、フォーマットとして必要です。そのように実行できるので楽しくEclipseが、その展開のコンソール(パスワードを隠)蹴ります。
private static String readLine(String prompt) {
String line = null;
Console c = System.console();
if (c != null) {
line = c.readLine(prompt);
} else {
System.out.print(prompt);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
line = bufferedReader.readLine();
} catch (IOException e) {
//Ignore
}
}
return line;
}
調査を実施しているのは、同じように、あくコンソールのオブジェクトからEclipse.ださいコンソール!= nullの場合、JARでは大きなギャップからョンをインストールして下さい。
ができるようにな取得をjava.io.コンソールのオブジェクトが他のアプリケーションに対すよEclipse.コマンドラインコンソールウィンドウを開かないとの願いにつきましては、ホームページの背景(経緯Eclipse?).現在ありませんEclipseプラグインを扱うこの問題を主因に、このjava.io.コンソールは最終的なクラスです。
きんは試験、返されるコンソールのオブジェクトのnullの場合、進行します。
この リンク ビ代替用システム。console().一つはBufferedReaderを包みます。は、第二次利用、スキャナーを包みます。ます。
ものとして簡潔にしてコンソールでも食なしのリゾートにはデバッグsilliness!
せEclipseのワークスペースC:\MyWorkspace, 作成したjavaアプリケーション内のmavenプロジェクトMyProject, おJavaメインクラスがcom.mydomain.mypackage.きます。
この場合、実行できるメインクラスを使用する System.console()
のコマンドライン:
java -cp C:\MyWorkspace\MyProject\target\classes com.mydomain.mypackage.MyClass
NB1:いない場合は、mavenプロジェクトは、チェックの出力フォルダをプロジェクトの性|Javaのビルド-パス|ソースです。することには"対象者/授業"
NB2:の場合はmavenプロジェクトがクラスはsrc/テスト/javaまれる"目標-試験授業"の代わりに"目標-教室"