JRE 1.7 - javaのバージョン - 戻り値: java/lang/NoClassDefFoundError: java/lang/Object
任意のjavaアプリケーション、または単に 'java'を実行すると、jvmが失敗します。
VMの初期化中にエラーが発生しました。 jgt;java/lang/NoClassDefFoundError: java/lang/Object
以下は、間違った答えのリストです。
1.正しいJavaのホームディレクトリ(/binディレクトリを含む)は、グローバルPATH上にあります。
2.JAVA_HOME が正しく設定されている
3.java -fullversionコマンドを実行すると動作する
$ java -fullversion
./java フルバージョン "1.7.0_05-b05"
4.usr/javaにあるシンボリックリンクは、すべて正しいjavaのインストールを指しています。
5.システムの作成時に 'default'のjavaをインストールしていない。
6.java -version`が失敗する...上記と同じエラーが出る
7.javaがインストールされているディレクトリ構造の下からコマンドを発行しても、動作しません。
8.これは64ビットのJAVAで、64ビットの
何かアイデアはありませんか?
131
3
この問題は、不適切なJavaのインストールに起因しています。
可能性1
注意:**このシナリオは、Java 8以前にのみ適用されます。rt.jarなどは存在せず、Pack200も使用されていません。
Javaの標準ライブラリは、
rt.jar
、deploy.jar
、jsse.jar
など、さまざまなJARに含まれています。JREのパッケージ化の際には、これらの重要なJARファイルはPack200で圧縮され、rt.pack
,deploy.pack
,jsse.pack
などの名前で保存されます。Javaインストーラーはこれらを解凍することになっています。このエラーが発生している場合は、どうやらそれが行われなかったようです。JRE'の
lib/
とlib/ext/
フォルダーにあるすべての.pack
ファイルに対して、手動でunpack200
を実行する必要があります。Windows
1つの
.pack
ファイル(例えばrt.pack
)を解凍するには、次のように実行します。JREルートからすべての
.pack
ファイルを再帰的にアンパックするには、次のように実行します。*nix
1つの
.pack
ファイル(例えばrt.pack
)を解凍するには、次のように実行します。JREルートからすべての
.pack
ファイルを再帰的にアンパックするには次のように実行します。可能性 2
他の方法でJavaを誤ってインストールした。管理者権限を持たずにインストールしたか、インストーラーから単にファイルを抽出しようとしたのかもしれません。インストーラーやより多くの権限を使ってもう一度試してみてください。あるいは、インストーラを使いたくない場合は、代わりに
.tar.gz
形式の Java パッケージを使ってください。64ビットのアーキテクチャでは、32ビット版と64ビット版のjreの両方をインストールする必要があるようです(rt.jarのようなアーキテクチャに依存しないファイルは32ビット版でのみ配布されています)。
その際、グローバルPATH環境変数に正しいjava実行ファイルを含めるように注意してください。
また、Linuxの場合は、tar.gzファイルを代わりに使うという方法もあります。solarisプラットフォームでも同じようなものがあるようです。この方法だと、すべてのファイルが期待通りのフォーマットになっているので、解凍の際に問題が発生することはありません。