Translate

ラベル Java VM の投稿を表示しています。 すべての投稿を表示
ラベル Java VM の投稿を表示しています。 すべての投稿を表示

2021/07/04

最近の Eclipse では Java VM が内包されている? (Eclipse IDE for C/C++ Developers 2021-06)

Papyrus もそうではありますが、自分としては通常の Eclipse も良く使っています。
特に Eclipse IDE for C/C++ Developers が、Java の開発環境と共にメインのIDEとなっています。
今回、Eclipse 2021-06 がリリースされたので、C/C++ Developers 版をダウンロードしてみました。

ダウンロードサイトからzipをダウンロード・展開し、eclipse.exe をダブルクリックして無事に起動するのを確認しました。


・・・と、ここまで実施した中でふとした疑問が。。。
「Java VM の指定は??」

少し前の Eclipse は起動する Java VM を eclipse.ini ファイルにて指定したりしてました。この記事とかですね。

指定しない場合には、「Java VM が見つからない」というエラーメッセージダイアグラムが表示されて「eclipse.ini に指定しないと・・・」と気づくことが多かったのですが、2021-06 では何故起動したのか・・・?

まずは [Installcation Details] のコンフィグレーション内容を確認してみようかと。[Installation Details] は上記画像の左下にあるボタンをクリックすることで表示できます。

その結果は・・・


おお! Java VM 指定がなされています(上記の赤字の部分です)。抜き出してみると、以下です:
-vm
C:\Eclipse\eclipse-cpp-2021-06-R-win32-x86_64\eclipse\\plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_16.0.1.v20210528-1205/jre/bin\server\jvm.dll
なるほどです。

もしかしたら Eclipse IDE for C/C++ Developers に特有の設定なのかもしれませんが、OpenJDK として提供されている Java VM の 16.0.1 の JRE を同封して使用する設定になっているのですね。
2017年頃だったでしょうか、Eclipse Foundation に IBM から Java VM が移管されて OpenJ9 として開発されることになったと思いますが、言語バージョンの問題などもあったのでしょうか、結局は OpenJDK を使用することになったのでしょうかね。

今後の Eclipse は JavaVM同封 が基本になるのでしょうかね?

現状の Papyrus もどうなっているのか、少し気になります。

そういえば少し前の Eclipse (C/C++ですが)の頃から、新しいバージョン (2021-03とか2021-06とか)が出たら、自動的にバージョンアップがなされているみたいです。
それとの関係もありそうですね。

また確認してみようかと思います。

2018/10/24

Papyrus が起動しない / Java VM

Papyrus-2018.9 を起動しようとしたら起動しなくなりました...

エラーを告げるダイアログがいっぱい出てきます.

Error: opening registry key 'Software\JavaSoft\JRE
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment

これらは Java Virtual Machine Launcher が出しているものですね.
この後に Eclipse 自体のエラー出力が表示されます.
タイトルには Papyrus と表示されていますがベースとなる Eclipse そのもののエラーです.

Java was started but returned exit code=2
Papyrus(Eclipse)が使用している JavaVM に問題があるとのことですが,さて何かしたかしらん,と考えてみると,そいえば少し前に Java の update が表示され対応したことを思い出しました.
確かにいつもとは違うアップデート画面で,インストールされているものを削除するという手順があったため,色々と削除したことを思い出しました.
Javaはほっておくと色々なバージョンがインストールされてしまうため,古い奴を消してくれる便利機能でも追加されたのかなと深く考えなかったのですが,どうやら違ったみたいです :-)

コマンドプロンプトをあげて javaw.exe や javac.exe をたたいてみても,同じようなメッセージがテキストで表示されました:
c:\Eclipse\papyrus-2018-09-4.1.0-win64\Papyrus>java
Error: opening registry key 'Software\JavaSoft\JRE'
Error: could not find java.dll
Error: Could not find Java SE Runtime Environment.

さてはてと考えていると,ふと先日, Oracle がJavaのライセンスやリリースモデルを変更するってニュースリリースしてたなぁ,と思い出しました.詳細はここに書いてあるものです:
JDKの新しいリリース・モデルおよび提供ライセンスについて
まぁ今もちゃんと読んではいませんが,ようは無償で使う場合には今後は OpenJDK を使ってね,ということでしょうかね(笑).
Linux環境では OpenJDK を普通に使っているのですが,Windowsでは Oracle JDK をこれまでずっと使っていました.
今回は Oracle JDK から OpenJDK に移行しないといけない状況での不連続点なのかもしれません.

確かに Eclipse/Papyrus を動作させる際,Windows下で使用される JavaVM の問題が発生したこともあり,どうしてもJavaVMを固定化したい場合には Eclipse/Papyrus のインストールフォルダの下に `jreフォルダ' を作成し,そこに JavaVM をコピーして使ったりしていました.もしくは Eclipse の ini ファイルを編集して,使用する JavaVM を固定化したりと.前者は複数人で同じ環境を使う場合(Eclipse/Papyrus環境を配布したりする場合),後者は自分単独で使う場合の対応として使い分けています.

感覚的にはそのような状況と同じような対応をすれば良いかなと.

では,と,OpenJDKをインストールします.
OpenJDK は jdk.java.net からダウンロードできます.現時点での最新版は以下のページから入手可能です:
Java Platform, Standard Edition 11 Reference Implementations

これまでの .exe 形式のインストーラではなく .zip での配布ですね.個人的にはどっちでも,です.

ファイル
openjdk-11+28_windows-x64_bin.zip
をダウンロードし,以下のように C:\OpenJDK フォルダの下で展開しました:


その後,Papyrus のインストールフォルダに行き,ファイル papyrus.ini に以下のように使用する JavaVM を陽に指定しました(赤色の太字の所).
-vm
C:\OpenJDK\jdk-11\bin\javaw.exe
-startup
plugins/org.eclipse.equinox.launcher_1.5.100.v20180827-1352.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.800.v20180827-1352
-showsplash
org.eclipse.papyrus.rcp
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vmargs
-Xms256m
-Xmx900m
-Dosgi.bundlefile.limit=200
赤色の太字以外は元々の設定です.
もしかしたらメモリ関係の設定値を増やしているやもしれませんが忘れました(笑)

これで再度 Papyrus を実行すると,無事に起動しました.