• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:eclipse java18 日本語文字化け)

eclipseでjava18を使用してプログラムを実行する際に日本語が文字化けする問題の解決方法

このQ&Aのポイント
  • eclipseでjava18を使用してプログラムを実行する際に日本語が文字化けする問題が発生しています。現在の状況は、JAVA18とeclipse2022-06 (4.24.0)をインストールし、プログラムを作成して実行しています。実行結果の表示画面では日本語が正常に表示されていますが、いくつかのプログラムの作成/実行を繰り返している間に、実行されているコンパイラがjava17であることが明らかになりました。そのため、eclipseにおいてJava18を設定してプログラムを実行すると日本語が文字化けしてしまいます。
  • 検索して試した解決方法として、eclipse.iniファイルに-Dfile.encoding=UTF-8を追加する方法が挙げられますが、この方法では問題が解決しませんでした。また、ウィンドウズのコマンドプロンプトでプログラムをコンパイル/実行した際には日本語が正常に表示されたため、JAVA18のインストールには問題がないことが分かりました。
  • 現在の状況では、eclipseでjava18のJREの登録が間違っている可能性があります。しかし、正確な解決方法がわからず困っています。解決策をご存知の方がいらっしゃれば、お力添えいただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

書いてる最中に、画像を投稿しようとしたら、送信しちゃいました。 改めて。 こちらでも同じ現象が出ており、 しかも、システムログだけは日本語で出るのに、 ユーザーログだけが綺麗に文字化け。 って状態ですよね? 原因は、ご指摘のように、 OpenJDK17とOpenJDK18の違いによるものです。 こちらでも、複数試してみたのですが、17系列までしか 正しく日本語表示が出来ないようです。 さらに、18系列では何をしてもダメみたいです。 vm系オプションにUTF8を書いても、 encoding系でUTF8を書いても、 起動してる状態のライブラリから強制的にUTF8で オーバーライドしても、全部ダメでした。 この件ですが、私の方でOracleのエンジニアに連絡をしてあり、 早めに対応したバージョンを出します。との事。 なので、現在は、JDK17をお使いください。 対応したJDK18が完成したら通知が来るので、 こちらでも試してみますが。

この投稿のマルチメディアは削除されているためご覧いただけません。
toshibo11
質問者

お礼

ずばりの回答ありがとうございます。 だいぶ前にソフト屋で主にC言語を使用しておりました。オブジェクト指向プログラミングをやってみたいのと、別の言語を勉強したいと思いjavaを選びました。 openJDK18が最新とのことで18を、開発環境でeclipse を選び、参考書を見ながらjavaの勉強していましたが文字化けが気になってjavaそのものの勉強どころではなくなってしまっていました。 勉強するだけなら17でもよかったのですが、自分のインストールや設定が間違っているなら解決してみたかったので18にこだわっていました。 しかしJDK18自体の問題と教えて頂きましたので、修正されるまで安心して17で勉強します。 オラクルと直接やり取り等尊敬します。  有用な情報ありがとうございました。

その他の回答 (2)

回答No.3

一応この件のスレッド https://youtrack.jetbrains.com/issue/IDEA-291006 こちらもお知らせしておきます。 チェコのエンジニアさんなのに中国人で、 日本語も少しわかる方と、こちらでも話をしながら 進めてるので。 (投稿してる人はその方ではない一般の人です。  それを私たちがJB側で話してるってだけなので) (最近別のソフトの巨大バグ見つけたので、社内スレッド  開けたところで、こっちも並行で調査中。) ソフトが違いますが、これは、JDK固有の問題なので、 解決方法も同じでしょう。 あと、IDEA有料版をこちらは使うのですが、 IDEA無料版でもeclipseよりは、使いやすいので。 何か、学校などが指定してる~とかじゃない限り、 そういう手もありますよ。。 ただ、Springなどは、有料側でしか使えないので、 そういうフレームワークの場合は、無料版だめですが。 単純にソース書いて実行するだけなら、 無料版でも、楽なのと、書式ミスはほとんど直してくれますからね。 class A { hoge() { B b=new B(); b.abc(); } } class B { private void abc() {} } こういう時、B.abcをpublicにしますか?って聞かれます。 結構この機能恐ろしい^^ ただ、やりすぎでstaticついてるメソッドまで、 いじったりして、thisないんですけど~なんてな、 笑いを生むような変な、変換してくれる時もあるけど ただ、ソースの補正が強力すぎて慣れるまでは 逆にいらいらしますけどね。 (ここ営業トークみたいになっちゃうので、これでやめときます) ってことでよい一日を!

回答No.1

その現象、こちらでも出てます。

関連するQ&A