140

Java アプリケーションまたは単に「Java」を実行すると、jvm が失敗します。

VM
java/lang/NoClassDefFoundError の初期化中にエラーが発生しました: java/lang/Object

間違った答えのリストは次のとおりです。

  1. /bin ディレクトリを含む正しい Java ホーム ディレクトリがグローバル PATH にある

  2. JAVA_HOME が正しく設定されている

  3. コマンド java -fullversion の実行

    $ java -fullversion
    
    ./java full version "1.7.0_05-b05"
    
  4. /usr/java 内のシンボリック リンクはすべて、正しい Java インストールを指しています。

  5. システムを作成したときに「デフォルト」の Java をインストールしませんでした

  6. java -version失敗...上記と同じエラー

  7. Java インストールのディレクトリ構造の下からコマンドを発行しても機能しません。

  8. これは、64 ビット用の 64 ビット Java です。

何か案は?

4

28 に答える 28

190

この問題は、Java の不適切なインストールに起因します。

可能性 1

注:このシナリオは、Java 8 以前にのみ適用されます。Java 9 以降、JRE は異なる構造になっています。rt.jar とその仲間はなくなり、Pack200 は使用されなくなりました。

Java 標準ライブラリはrt.jardeploy.jar、 、 などのさまざまな JAR に含まれています。JREjsse.jarがパッケージ化されると、これらの重要な JAR ファイルは Pack200 で圧縮され、、 、 などとして保存されます。Java インストーラーはそれらを解凍することになっています。このエラーが発生している場合は、明らかに発生していません。rt.packdeploy.packjsse.pack

JREおよびフォルダー内のunpack200すべてのファイルに対して手動で実行する必要があります。.packlib/lib/ext/

ウィンドウズ

.pack1 つのファイル (たとえばrt.pack)を解凍するには、次のコマンドを実行します。

"%JAVA_HOME%\bin\unpack200" -r -v rt.pack rt.jar

すべてのファイルを再帰的に解凍.packするには、JRE ルートから次を実行します。

for /r %f in (*.pack) do "%JAVA_HOME%\bin\unpack200.exe" -r -q "%f" "%~pf%~nf.jar"

*ニックス

.pack1 つのファイル (たとえばrt.pack)を解凍するには、次のコマンドを実行します。

/usr/bin/unpack200 -r -v rt.pack rt.jar

すべてのファイルを再帰的に解凍.packするには、JRE ルートから次を実行します。

find -iname "*.pack" -exec sh -c "/usr/bin/unpack200 -r -q {} \$(echo {} | sed 's/\(.*\.\)pack/\1jar/')" \;

可能性 2

他の方法で Java を誤ってインストールした。管理者権限なしでインストールしたか、単にインストーラーからファイルを抽出しようとした可能性があります。インストーラーまたはその他の権限で再試行してください。または、インストーラーを使用したくない場合は、.tar.gz代わりに Java パッケージを使用してください。

于 2013-01-23T12:51:17.840 に答える
13

64 ビット アーキテクチャの場合、32 ビット バージョンと 64 ビット バージョンの jre の両方をインストールする必要があるようです (rt.jar などのアーキテクチャに依存しないファイルは 32 ビット バージョンでのみ配布されます)。

グローバル PATH 環境変数に正しい Java 実行可能ファイルを含めるように注意してください。

于 2012-10-10T08:32:12.537 に答える
10

今日、新しいJDK(1.8.0.73)をダウンロードc:> java.exeして、悪名高いものを取得しました:

Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

ここで私の実用的なソリューションを共有したかっただけです。

フォルダーに cd したときjdk\bin、Java は問題なく動作するので、それがPATH. PATHそれを証明するためにCMDだけに設定し\jdk\binましたが、うまくいきました。

PATHそのため、必要なフォルダの 1 つがjava.exe競合の原因になっていると思いました。結局のところ、それは実行可能ファイルへのシンボリックリンクC:\>ProgramData\Oracle\Java\javapathを保持していました。

java.exeを指していましたjre\bin。開始時にファイルが破損していました\jre\bin\java.exe-- まったく同じエラーです。ビンゴ。JREを再インストールしたところ、問題はなくなりました。幸せなコーディング...

于 2016-03-04T01:33:42.763 に答える
6

_uncompressing_この問題は、JDKの代わりにそれを使用して JDK をインストールすると発生します_executing_

例:

unzip jdk-6u45-linux-x64.bin  (wrong)

sh ./jdk-6u45-linux-x64.bin   (right)

最初のシナリオでは、ランタイム ライブラリ (rt.jar など) は自動的に圧縮解除されません (したがって、.jar ファイルの代わりに rt.pack ファイルなどを見つけることができます)。

于 2015-10-06T10:52:36.937 に答える
4

私は最近同じ問題を抱えていました。私の場合、Windows 7 マシンは自動的に Java をダウンロードC:\ProgramData\Oracle\Java\javapathし、パス環境変数の先頭に追加したため、Java が台無しになりました。パスからそれを取り除くと、うまくいきました。

于 2016-01-25T22:03:43.577 に答える
3

64 ビットだけをインストールすることはできません。最初に 32 ビットをインストールしてから、64 ビット コンポーネントを追加する必要があります。

java.com から:

32 ビット JVM を許可する 64 ビット システムに JRE をインストールするには、2 段階のプロセスがあります。最初に 32 ビット JRE をインストールし、次に 64 ビット操作の追加サポートをインストールします。ファイル名は次のとおりです。

于 2014-08-21T21:06:49.100 に答える
3

Java バイナリで「chmod u+rx」を実行して実行すると、jar ファイルが解凍され、実行時エラーなしで Java バージョンを実行できます。

于 2014-08-20T14:19:05.313 に答える
1

私の場合、Windows 8.1 (jdk1.8.0_77 がインストールされている) を使用し、次の 3 つのことを行いました。

  1. 以前のjdkを削除しました
  2. C:\Windows\System32 内の java.exe ファイルの名前を変更しました
  3. PATH の C:\ProgramData\Oracle\Java\javapath も削除しました (echo %PATH%)

そして出来上がりはそれを修正しました!

于 2016-04-04T11:07:07.917 に答える
1

同様の問題に直面し、プログラム データ (C:\ProgramData\Oracle\Java\javapath) のシンボリック リンクが間違っていることがわかりました。正しいパスを指定しましたが、うまくいきました。

プログラムデータの修正方法の詳細はこちら

于 2016-08-08T07:22:47.627 に答える
0

コントロール パネルに移動し、Java 関連のものをアンインストールし (開いている場合は Eclipse を閉じます)、Java を再インストールして Eclipse を開き、プロジェクトをクリーンアップします。

于 2016-09-30T07:32:27.877 に答える
0

jreを再度インストールするだけです。それは単に私の問題を解決しました。(jdkをインストールした後、SonarQubeの起動バッチでこのエラーが発生し始めました)

于 2016-08-24T22:43:49.050 に答える
0

JDK 1.7.0_40 i586 を使用した x86_64 Linux インストールで問題が発生しました。Rigg802 で述べられているように、rpm が jar ファイルを解凍できないことが問題であることがわかりました (ただし、rpm は成功のマーキングを完了します)。

Unpacking JAR files...
        rt.jar...
/var/tmp/rpm-tmp.zLzkkb: /usr/java/jdk1.7.0_40/bin/unpack200: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory
Error: unpack could not create JAR file:

        /usr/java/jdk1.7.0_40/jre/lib/rt.jar

ファイル /lib/ld-linux.so.2 は、glibc-2.12-1.107.el6_4.4 によって提供されます。jdk rpm の rpm deps に含まれていないi686 。

Oracle JDK rpm には、libgcc-4.4.7-3.el6 の 32 ビット バージョンも必要です。インストールするi686

したがって、回避策として、まず glibc-2.12-1.107.el6_4.4.i686 と libgcc-4.4.7-3.el6.i686 をインストールします。

于 2013-10-15T08:17:42.523 に答える
0

別の答えは、Linux の場合は代わりに tar.gz ファイルを使用することです。solaris プラットフォームにもそのようなものがあるようです。こうすることで、すべてのファイルがすでに期待される形式になっているため、解凍の問題は発生しません。

于 2013-09-23T15:45:36.780 に答える
0

これにより、CentOSで発生した問題が修正されました

sudo yum install java-1.8.0-openjdk-devel

CentOS 6 での JAVA_HOME と CLASSPATH の設定も参照してください。

于 2018-01-26T18:19:57.703 に答える
0

それで、私はすべてを試してみましたが、最後にJavaをアンインストールした後に再インストールすると問題が解決したようです。

于 2018-01-28T23:05:56.820 に答える
-1

私は同じ問題に直面しました.2つのJavaバージョンをインストールしたため、この問題が発生しました. これを確認するには、コントロール パネルの Java アイコンをクリックして開きません。問題は同じです。1 つのバージョンをアンインストールしてください。ケーキ。ありがとう。

于 2016-08-09T12:36:54.097 に答える
-2

私は同じ問題に直面していました: VM java/lang/NoClassDefFoundError: java/lang/Object の初期化中にエラーが発生しました

問題を解決するには、以下の手順に従います。

ステップ 1. C:\Program Files\ に移動し、Java フォルダーを検索します。

ステップ 2. C:\Program Files\Java フォルダーを削除します。

ステップ 3. http://www.oracle.com/technetwork/java/javase/downloads/index.htmlからバージョン 32 ビット/64 ビット用の新しい Jdk をダウンロードします。

ステップ 4.JDK をインストールする

ステップ 5: JAVA_HOME を「C:\Program Files\Java\jdk1.8.0_91」に設定します。

ステップ 6: コマンド プロンプトを開き、java -version と入力します。

できます。

于 2016-06-28T08:41:37.983 に答える