6

RubyのRVM(またはRBENV)のように、実行中のJava実装を切り替えることができるツールを探しています。Debianシステムが代替メカニズムを提供し、JAVA_HOMEを手動で設定できることを知っています。

ただし、可能であればもっと自動化したものが欲しいです。JDKをフェッチできれば、さらに優れていますが、必須ではありません。

検索しましたが、そのようなものは見つかりませんでした。私の推測では、JavaエコシステムはIDEでこの機能を使用することに慣れています。

編集:PATHとJAVA_HOMEの変更は正常に機能しているようです。簡単に自動化できます。

4

4 に答える 4

5

RubyのRVMに基づくjenvがあります。

新しいJavaバージョンを追加するには、いくつかの手動手順を実行する必要があります†が、それらが追加されたら、を使用してそれらを切り替えることができますjenv use java $version。また、特定のJavaバージョンに対するJavaアプリケーションのインストールも処理します。

私が使用していない別のツールもあります。紛らわしいことにjenvという名前ですが、代わりにRubyのrbenvに基づいています。

†Javaバージョンを追加する手間は、Oracle、おそらくライセンスの問題が原因であるように思われ、両方のツールに当てはまるようです。

于 2014-03-11T14:36:29.203 に答える
2

そのようなツールはないと思います。すべてのプラットフォームが独自のシステムにヒットしています。Debian / Ubuntu、RedHat / CentOS、SLE / OpenSUSE(おそらく他のディストリビューションも)は代替メカニズムを使用しています。Mac OSXには、現在使用されているJVMを変更するための独自の組み込みスイッチングメカニズムがあります。

多くの開発者ワークステーションとサーバーを維持する必要があります。すべての*nixベース(OSX、Linux、Solaris)であり、ディレクトリにすべてのJVMをインストールし、使用するバージョンへのシンボリックリンクCURRENTを作成するために使用されます。このCURRENTシンボリックリンクを指すJAVA_HOMEおよびPATH変数。Iaが別のバージョンを使用したい場合は、現在のシンボリックリンクを移動するためにhafのみを使用してください。それ以上のアクションは必要ありません。

残念ながら、このアプローチはWindowsベースのシステムでは機能しません。

于 2012-04-20T05:42:48.723 に答える
2

2016年以降にそのようなツールを探している人は-jabbaを試してください。これはnvm/gvm / rvmの後に設計されています(実際、CLIはnvmのものとほとんど同じです)。

jabba install 1.8 # "jabba use 1.8" will be called automatically 
jabba ls # list all installed jdk's
jabba use 1.6 # switch to a different version of jdk 

完全開示:私はプロジェクトのメンテナーです。

于 2016-03-25T06:13:26.647 に答える
1

SDKmanは行く方法です:

The Software Development Kit Manager

SDKMAN! is a tool for managing parallel versions of multiple Software Development Kits on most Unix based systems. It provides a convenient Command Line Interface (CLI) and API for installing, switching, removing and listing Candidates. Formerly known as GVM the Groovy enVironment Manager, it was inspired by the very useful RVM and rbenv tools, used at large by the Ruby community. 

https://sdkman.io/

具体的にはRVMについて言及し、RVMと同様に、次の方法でインストールしcurlます。

今すぐ始めましょう!

続けて、ターミナルで以下を貼り付けて実行します。

$ curl -s "https://get.sdkman.io" | bash 
于 2018-12-15T17:12:17.053 に答える