openJFX 環境構築時のつまづきと対処
概要
- PC内に複数のJavaがインストールされており,それらにPATHが通っている場合は, コマンドの呼出優先順序に気を付けよう.
- また,すでにアンインストールしていても,PC内に残ってしまうコマンドが存在するので注意しよう.
2019/10/20 20時過ぎ,『やさしいJava 活用編 第6版』を参考に,JavaのGUIアプリを作ってみようと思い立つ.
使用したGUIライブラリはJavaFX 11である.
javaFXどころか,javaのプログラミング自体したことないので,とりあえずJDK 11(気分的にFXと同じヴァージョンを選んだ)をインストールしてポチポチした.
本の通り進めたが,さっそくトラブル発生.
本書によると,javafxアプリケーションをコンパイルするときは,以下のように書けばよいという.
javac -p <ライブラリを配置した場所> --add-modules <必要な追加モジュール名> <ソースファイル名>
次に,生成されたclassファイルを実行するときは,以下のようにせよと.
java -p <ライブラリを配置した場所> --add-modules <必要な追加モジュール名> <クラス名>
サンプルプログラムもコマンドも同様に記述した.
javacによるコンパイルはうまく通ったようだ.
しかし,javaコマンドでつまづいた.
エラーメッセージによると,
Unrecognized option: -p
Error: could not create the Java Virtual Machine.
Error: A fatal exception has occured. Program will exit.
コマンドオプション「-p」が使えんと?
javacでは問題なかったのに?
本にはこの問題について記述がなかったため,ネットでサーフィンしまくった.
しかし,なかなか有用な解決策は載っておらず,マジで困った.
(さいさき悪すぎやん~~)
JDKとjavaFXのversion非互換とかも疑い,色々再インストールして様々なパターンを試したけど,うまくいかず.
結局,問題が特定できたのは夜の12時過ぎ.
原因は,以前インストールしていた(そして現在は削除済みの)JDK 8の残骸である.
かなり昔にアンインストールしたと思うが,なぜか以下の場所にアプリケーションとして残っていた.
C:\Program Files (x86)\Common Files\Oracle\Java\javapath
ちなみに,この残存フォルダ内にjavacコマンドはない.
つまり,何が起こっていたかというと,javacコマンドは本日インストールしたものが呼び出されていたのだが,javaコマンドは昔インストールしたものが呼び出されていたのだ.
また,残存javaは,システム環境変数のトップレベルに位置しているため,ユーザー環境変数を弄っても意味がなかったのだ.
(→常に呼出優先順位が先のため,後から再インストールして再度PATHを通してもダメ)
そこで,残存しているjavaフォルダをリネームした.
(削除しても大丈夫かどうか,なんとなく不安だったから)
すると,javaコマンドも本日インストールしたものが呼び出されるようになり,問題は解決した.
ちなみに,javaコマンド等の実体の場所は,コマンドプロンプトにおいて以下のコマンドで確認できる.
where java
where javac
ディスカッション
コメント一覧
まだ、コメントがありません