NoClassDefFoundErrorとClassNotFoundExceptionの原因と違いは何ですか?


371

違いは何であるNoClassDefFoundErrorとはClassNotFoundException

それらがスローされる原因は何ですか?どうすれば解決できますか?

既存のコードを変更して新しいjarファイルを含めるときに、これらのスロー可能オブジェクトに遭遇することがよくあります。クライアント側とサーバー側の両方で、webstartを介して配布されたJavaアプリを攻撃しました。

私が遭遇した考えられる理由:

  1. build.xmlコードのクライアント側に含まれていないパッケージ
  2. 使用している新しいjarのランタイムクラスパスがありません
  3. バージョンが以前のjarと競合しています

今日これらに遭遇したとき、私は物事を機能させるために試行錯誤のアプローチをとります。もっと明確にして理解してほしい。


JVMを-verbose(例-verbose:class -verbose:jni:)で実行すると役立つことがよくあります—しかし、モグジーは回答の下に、これが追加の有用な情報を提供しないと報告しています:(
PJTraill

回答:


388

Java API仕様との違いは以下の通りです。

の場合ClassNotFoundException

アプリケーションが文字列名を使用してクラスをロードしようとすると、次のようにスローされます。

  • forNameクラスのメソッドClass
  • findSystemClassクラスのメソッドClassLoader
  • loadClassクラスのメソッドClassLoader

しかし、指定された名前のクラスの定義が見つかりませんでした。

の場合NoClassDefFoundError

Java仮想マシンまたはClassLoaderインスタンスがクラスの定義を(通常のメソッド呼び出しの一部として、または新しい式を使用して新しいインスタンスを作成する一環として)ロードしようとし、クラスの定義が見つからなかった場合にスローされます。

検索対象のクラス定義は、現在実行中のクラスがコンパイルされたときに存在していましたが、定義が見つかりません。

したがって、NoClassDefFoundErrorソースが正常にコンパイルされたときにが発生したように見えますが、実行時に必要なclassファイルが見つかりませんでした。これは、必要なすべてのclassファイルが含まれていないJARファイルの配布または生成で発生する可能性があります。

についてはClassNotFoundException、実行時にクラスをリフレクト呼び出ししようとしたことが原因である可能性がありますが、プログラムが呼び出そうとしているクラスは存在しません。

2つの違いは、1つはでErrorあり、もう1つはであるということExceptionです。with NoClassDefFoundErrorは、ErrorJava Virtual Machineが期待するクラスを見つけるのに問題があることから発生します。classファイルが見つからないか、コンパイル時に生成または検出されたものとは異なるため、コンパイル時に動作すると予想されたプログラムは実行できません。プログラムはJVMから開始できないため、これはかなり重大なエラーです。

一方、はClassNotFoundExceptionであるExceptionため、ある程度予想され、回復可能なものです。リフレクションを使用すると、エラーが発生しやすくなります(予想どおりに実行されない可能性があるため、コンパイル時にチェックが必要なクラスがすべて存在することを確認できないため、必要なクラスの検索に関する問題が実行時に表示されます) 。


53
NoClassDefFoundError通常、クラスの静的ブロックまたは静的フィールドの初期化に問題(例外がスローされる)がある場合に発生するため、クラスを正常に初期化できません。
Dagang 2013年

7
賛成票。一つはあるErrorと他のですException。:)
Ravi

83

ClassNotFoundExceptionは、報告されたクラスがClassLoaderによって見つからない場合にスローされます。これは通常、クラスがCLASSPATHにないことを意味します。また、問題のクラスが親クラスローダーにロードされた別のクラスからロードされようとしているため、子クラスローダーのクラスが表示されないことも意味します。これは、App Serverなどのより複雑な環境で作業している場合に発生することがあります(WebSphereは、このようなクラスローダーの問題で悪名高いです)。

人々はしばしば混乱java.lang.NoClassDefFoundErrorする傾向がありますがjava.lang.ClassNotFoundException、重要な違いがあります。たとえば、次のような例外(実際にjava.lang.NoClassDefFoundErrorはjava.lang.Errorのサブクラスであるためエラー)

java.lang.NoClassDefFoundError:
org/apache/activemq/ActiveMQConnectionFactory

ActiveMQConnectionFactoryクラスがCLASSPATHにないことを意味するものではありません。実際にはその正反対です。これは、クラスActiveMQConnectionFactoryがClassLoaderによって検出されたことを意味しますが、クラスをロードしようとしたときに、クラス定義の読み取り中にエラーが発生しました。これは通常、問題のクラスに、ClassLoaderで検出されないクラスを使用する静的ブロックまたはメンバーがある場合に発生します。そのため、原因を見つけるには、問題のクラス(この場合はActiveMQConnectionFactory)のソースを表示し、静的ブロックまたは静的メンバーを使用するコードを探します。ソースにアクセスできない場合は、JADを使用してソースを逆コンパイルしてください。

コードを調べて、次のようなコード行が見つかったとしたら、クラスSomeClassがCLASSPATHに含まれていることを確認してください。

private static SomeClass foo = new SomeClass();

ヒント:クラスが属するjarを見つけるには、WebサイトjarFinderを使用できます。これにより、ワイルドカードを使用してクラス名を指定でき、jarのデータベースでクラスを検索します。jarhooを使用すると、同じことを実行できますが、自由に使用できなくなります。

クラスが属するjarをローカルパスで検索する場合は、jarscan(http://www.inetfeedback.com/jarscan/)などのユーティリティを使用できます。検索するクラスと、jarおよびzipファイルでクラスの検索を開始するルートディレクトリパスを指定するだけです。


9
これが正解で最後に投票したのは面白いです。(投票する前に-1でも)。ClassNotFoundExceptionは、CLが.classファイルを認識しないことを意味します。NoClassDefFoundErrorは、.classファイルがそこにロードできないことを意味します(おそらくJNIエラー)。
user43685

1
この回答は回答フォームcoobirdと矛盾していませんか?
zardosht

Staticブロックの同様の例を試しました。私のクラスClass1には、静的変数「private static B foo = new B();」があります。コンパイル後、binフォルダーからB.classファイルを削除しました。次に、Class1のオブジェクトを作成するときに、3番目のクラスのMainメソッドから。エラーはfollwsとしてスローされます:--------「スレッド "main"の例外java.lang.NoClassDefFoundError:spring / B "........したがって、見つからなかったクラスが正確に示されていますieclassは静的ブロックで参照され、外部クラスでは参照されません。したがって、この回答に反しています。
Kaushik Lele

「ActiveMQConnectionFactoryクラスがCLASSPATHにないことを意味しない」に関する明確化のための+1
akila

35

NoClassDefFoundError基本的にリンケージエラーです。これは、オブジェクトを(静的に "new"で静的に)インスタンス化しようとしたときに発生し、コンパイル時に見つかりませんでした。

ClassNotFoundExceptionはより一般的であり、存在しないクラスを使用しようとしたときのランタイム例外です。たとえば、関数のパラメーターがインターフェイスを受け入れ、そのインターフェイスを実装するクラスが誰かに渡されたが、そのクラスにアクセスできない。また、loadClass()またはを使用するなど、動的なクラスローディングのケースもカバーしていClass.forName()ます。


29

NoClassDefFoundError(NCDFE)は、コードが "new Y()"を実行し、Yクラスが見つからない場合に発生します。

他のコメントが示唆するように、クラスローダーからYが欠落している可能性がありますが、Yクラスが署名されていないか、無効な署名があるか、またはYがコードから見えない別のクラスローダーによって読み込まれている可能性があります、またはそのYはZに依存し、上記の理由のいずれかのためにロードできませんでした。

これが発生すると、JVMはX(NCDFE)をロードした結果を記憶し、理由を告げることなく、Yを要求するたびに新しいNCDFEをスローします。

クラスa {
  静的クラスb {}
  public static void main(String args []){
    System.out.println( "最初の試行new b():");
    {new b();を試してください } catch(Throwable t){t.printStackTrace();}
    System.out.println( "\ n2回目の試行new b():");
    {new b();を試してください } catch(Throwable t){t.printStackTrace();}
  }
}

これをa.javaとしてどこかに保存します

このコードは、新しい "b"クラスを2回インスタンス化しようとするだけです。それ以外は、バグがなく、何もしません。

でコードをコンパイルしjavac a.java、次に呼び出しによってaを実行しjava -cp . aます。2行のテキストを出力するだけで、エラーなしで正常に実行されます。

次に、「a $ b.class」ファイルを削除して(またはゴミで埋めるか、a.classをその上にコピーして)、欠落または破損したクラスをシミュレートします。ここで何が起こるかです:

最初に新しいb()を試みます。
java.lang.NoClassDefFoundError:a $ b
    a.main(a.java:5)で
原因:java.lang.ClassNotFoundException:a $ b
    java.net.URLClassLoader $ 1.run(URLClassLoader.java:200)で
    java.security.AccessController.doPrivileged(Native Method)で
    java.net.URLClassLoader.findClass(URLClassLoader.java:188)で
    java.lang.ClassLoader.loadClass(ClassLoader.java:307)で
    sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:301)で
    java.lang.ClassLoader.loadClass(ClassLoader.java:252)で
    java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... あともう1つ

2回目の試行new b():
java.lang.NoClassDefFoundError:a $ b
    a.main(a.java:7)で

最初の呼び出しの結果、ClassNotFoundExceptionが発生し(クラスが見つからないときにクラスローダーによってスローされます)、問題のコード(new b())が機能するため、チェックされていないNoClassDefFoundErrorにラップする必要があります。

もちろん、2回目の試行も失敗しますが、ClassLoaderが失敗したクラスローダーを記憶しているように見えるため、ラップされた例外はもうありません。NCDFEのみが表示され、実際に何が起こったのかまったくわかりません。

したがって、根本原因のないNCDFEが表示された場合は、クラスが最初にロードされた時刻に戻ってエラーの原因を見つけることができるかどうかを確認する必要があります。


-verbose特定のJVMに応じて、JVMを、または同様のオプションで実行するのはどうですか?おそらく-verbose:class、おそらく-verbose:class:jniJNIを使​​用していると思いますが、構文についてはわかりません。これが便利な場合は、結果を表示できます。
PJTraill 2016年

欠落しているクラスに関連する追加の出力-verbose:class-verbose:jni提供しません。
mogsie

1
結果ががっかりしている場合でも、試していただきありがとうございます。(PS私は以来見出したことは-verbose:class:jni間違っている:1、2つの別々のオプションを指定することがあります-verbose:class -verbose:jni。)
PJTraill

2
最後の文* 1,000,000:したがって、根本的な原因のないNCDFEが表示された場合、エラーの原因を見つけるために、クラスが最初にロードされたときまで追跡できるかどうかを確認する必要があります。
batwad

20

http://www.javaroots.com/2013/02/classnotfoundexception-vs.htmlから:

ClassNotFoundException:クラスローダーがクラスパスで必要なクラスを見つけられなかったときに発生します。したがって、基本的にはクラスパスを確認し、クラスパスにクラスを追加する必要があります。

NoClassDefFoundError:これはデバッグして理由を見つけるのがより困難です。これは、コンパイル時に必要なクラスが存在するときにスローされますが、実行時にクラスが変更または削除されるか、クラスの静的初期化で例外がスローされます。これは、ロードされるクラスがクラスパスに存在するが、このクラスで必要なクラスの1つが削除されたか、コンパイラーによるロードに失敗したことを意味します。したがって、このクラスに依存するクラスが表示されるはずです。

public class Test1
{
}


public class Test 
{
   public static void main(String[] args)
   {
        Test1 = new Test1();    
   }

}

両方のクラスをコンパイルした後、Test1.classファイルを削除してTestクラスを実行すると、スローされます

Exception in thread "main" java.lang.NoClassDefFoundError: Test
    at Test1.main(Test1.java:5)
Caused by: java.lang.ClassNotFoundException: Test
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 1 more

ClassNotFoundException:アプリケーションが名前でクラスをロードしようとしたが、指定された名前のクラスの定義が見つからなかった場合にスローされます。

NoClassDefFoundError:Java仮想マシンがクラスの定義をロードしようとして、クラスの定義が見つからなかった場合にスローされます。


-verbose特定のJVMに応じて、JVMを、または同様のオプションで実行するのはどうですか?おそらく-verbose:class、おそらく-verbose:class:jniJNIを使​​用していると思いますが、構文についてはわかりません。
PJTraill 2016年

-verbose:class:jniは間違っていますが、2つの異なるオプションを渡すことができます-verbose:class -verbose:jni
PJTraill 2016年

15

それらのそれぞれとそのようなエラーに対処する方法についての思考プロセスを取得する理由は何ですか?

それらは密接に関連しています。ClassNotFoundExceptionJavaが名前で特定のクラスを探しに行き、正常にロードできなかった場合、A がスローされます。NoClassDefFoundErrorJavaが既存のコードにリンクされているクラスを探しに行ったが、何らかの理由(たとえば、クラスパスが正しくない、Javaのバージョンが間違っている、ライブラリのバージョンが間違っている)で見つからなかったためにA がスローされ、完全に致命的であるそれは何かがひどく間違っていることを示しているので。

Cのバックグラウンドがある場合、CNFEはdlopen()/の失敗のようなものでdlsym()あり、NCDFEはリンカーの問題です。2番目のケースでは、関係するクラスファイルは、使用しようとしている構成で実際にコンパイルされていてはなりません。


11

例1:

class A{
 void met(){
   Class.forName("com.example.Class1");
 }
}

com/example/Class1どのクラスパスにも存在しない場合は、をスローしClassNotFoundExceptionます。

例2:

Class B{
  void met(){
   com.example.Class2 c = new com.example.Class2();
 }
}

com/example/Class2Bのコンパイル中に存在したが、実行中に見つからなかった場合は、がスローされNoClassDefFoundErrorます。

どちらもランタイム例外です。


9

ClassNotFoundExceptionは、Stringを介して参照することによりクラスをロードしようとした場合にスローされます。たとえば、Class.forName()のパラメータtoは文字列であり、これによりクラスローダーに無効なバイナリ名が渡される可能性が生じます。

ClassNotFoundExceptionは、潜在的に無効なバイナリ名が検出された場合にスローされます。たとえば、クラス名に「/」文字が含まれていると、ClassNotFoundExceptionが発生します。また、直接参照されるクラスがクラスパスで使用できない場合にもスローされます。

一方、NoClassDefFoundErrorがスローされます

  • クラスの実際の物理表現-.classファイルが利用できない場合、
  • または、クラスはすでに別のクラスローダーにロードされています(通常、親クラスローダーがクラスをロードしているため、クラスを再度ロードすることはできません)。
  • または、互換性のないクラス定義が見つかった場合-クラスファイル内の名前が要求された名前と一致しない場合
  • または(最も重要なこと)依存クラスを見つけてロードできない場合。この場合、直接参照されるクラスが検出されてロードされた可能性がありますが、依存クラスが利用できないか、ロードできません。これは、直接参照されるクラスをClass.forNameまたは同等のメソッドを介してロードできるシナリオです。これはリンケージの失敗を示しています。

つまり、ClassClassFoundFoundErrorは、クラスローダーがクラス定義を検出またはロードできない場合に、通常は(ClassNotFoundExceptionのクラスの文字列ベースのロードとは対照的に)以前に存在しなかったクラスをロードするnew()ステートメントまたはメソッド呼び出しでスローされます( s)。

最終的に、クラスをロードできないときにClassNotFoundExceptionのインスタンスをスローするかどうかは、ClassLoader実装次第です。ほとんどのカスタムクラスローダー実装は、URLClassLoaderを拡張するため、これを実行します。通常、クラスローダーはメソッド実装のいずれにもNoClassDefFoundErrorを明示的にスローしません。この例外は通常、クラスローダー自体ではなく、HotSpotコンパイラのJVMからスローされます。


「クラスファイル内の名前が要求された名前と一致しません」について言及することに賛成票を投じてください。これは非常に一般的な原因です。
ローンの侯爵、

8

ClassNotFoundExceptionとNoClassDefFoundErrorの違い

ここに画像の説明を入力してください


はっきりしない。「クラスパスで更新されていません」は曖昧/不正確です。これは、JAR がクラスパスに存在しないか、クラスパスにあるJARのバージョン間違っているかのいずれかです。そしてスペルミス。また、(ため息)ファンキーなグラフィックとして情報を投稿したため、これを修正することはできません。
スティーブンC

8

名前自体を使用すると、1つのfrom Exceptionと他のfrom を簡単に識別できますError

例外:プログラムの実行中に例外が発生します。プログラマーは、try catchブロックを使用してこれらの例外を処理できます。例外は2種類あります。コンパイル時にスローされる例外を確認しました。実行時にスローされる実行時例外。これらの例外は通常、プログラミングの不良が原因で発生します。

エラー:これらは例外ではなく、プログラマの範囲を超えています。これらのエラーは通常、JVMによってスローされます。


ここに画像の説明を入力してください 画像ソース

差:

ClassNotFoundException:

  • クラスローダーは、取得するクラスローディングサブシステムのリンクフェーズで言及したクラスバイトコードの検証に失敗します。ClassNotFoundException
  • ClassNotFoundExceptionjava.lang.Exceptionクラスから直接派生したチェック済み例外であり、明示的な処理を提供する必要がある
  • ClassNotFoundExceptionClassLoader.loadClass()、Class.forName()、およびClassLoader.findSystemClass()を使用して実行時にクラスの名前を提供することにより、クラスの明示的なロードがある場合に表示されます。

NoClassDefFoundError:

  • クラスローダーは、取得するクラスローディングサブシステムのリンクフェーズクラスの参照を解決できません。NoClassDefFoundError
  • NoClassDefFoundErrorLinkageErrorクラスから派生したエラーです。これは、クラスが他のクラスへの依存関係を持ち、そのクラスがコンパイル後に非互換に変更されたエラーの場合を示すために使用されます。
  • NoClassDefFoundErrorそのクラスからのメソッド呼び出しまたは変数アクセスによるクラスの暗黙的なロードの結果です。

類似点:

  • どちらNoClassDefFoundErrorClassNotFoundException実行時にクラスの使用不能に関連しています。
  • どちらClassNotFoundExceptionNoClassDefFoundErrorJavaクラスパスに関連しています。

3

クラスローダーのsussystemアクションを考えてみましょう:

http://www.artima.com/insidejvm/ed2/images/fig7-1.gif

これは、違いを理解するのに非常に役立つ記事です。http//docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html

クラスのロード中にエラーが発生した場合、LinkageErrorのサブクラスのインスタンスは、ロードされているクラスまたはインターフェイスを(直接的または間接的に)使用するプログラム内のポイントでスローする必要があります。

Java仮想マシンが検証(§5.4.1)または解決(§5.4.3)(ただし初期化(§5.5)ではない)中にクラスCをロードしようとした場合、およびCのロードを開始するために使用されるクラスローダーClassNotFoundExceptionのインスタンスをスローすると、Java仮想マシンはClassNotFoundExceptionのインスタンスを原因とするNoClassDefFoundErrorのインスタンスをスローする必要があります。

したがって、ClassNotFoundExceptionNoClassDefFoundErrorの根本的な原因です。
また、NoClassDefFoundErrorは、型の読み込みエラーの特別なケースであり、リンクのステップで発生します。


2

実際に考えられる理由を1つ追加してください。

  • ClassNotFoundException:cletusが言ったように、継承されたインターフェイスのクラスがクラスパスにないときにインターフェイスを使用します。たとえば、サービスプロバイダーパターン(またはサービスロケーター)が存在しないクラスを見つけようとしています
  • NoClassDefFoundError:指定されたクラスの依存関係が見つからない一方で、指定されたクラスが見つかりました

実際には、Error暗黙的にスローされる場合があります。たとえば、タイマータスクを送信し、タイマータスクでErrorをスローしますが、ほとんどの場合、プログラムはExceptionのみをキャッチします。その後、タイマーのメインループは情報なしで終了します。NoClassDefFoundErrorがのようなエラーがあるExceptionInInitializerError静的初期化子または静的変数の初期化子が例外をスローした場合、。


1

ClassNotFoundExceptionは、Class.forName()またはClassLoader.findSystemClass()またはClassLoader.loadClass()メソッドを使用して文字列名でクラスをロードするようにJVMに指示し、言及されたクラスがクラスパスで見つからない場合に発生するチェック例外です。

ほとんどの場合、この例外は、必要なJARファイルでクラスパスを更新せずにアプリケーションを実行しようとしたときに発生します。たとえば、JDBCコードを実行してデータベース(MySQL)に接続しているときにこの例外が発生した可能性がありますが、クラスパスにJARがありません。

NoClassDefFoundErrorエラーは、JVMがコード実行の一部である特定のクラスを(通常のメソッド呼び出しの一部として、またはnewキーワードを使用してインスタンスを作成する一環として)ロードしようとしたときに発生し、そのクラスはクラスパスに存在しないが、プログラムを実行するにはコンパイルする必要があるため、コンパイル時に存在します。存在しないクラスを使用しようとすると、コンパイラによってコンパイルエラーが発生します。

以下は簡単な説明です

ここに画像の説明を入力してください

詳細については、ClassNotFoundExceptionとNoClassDefFoundErrorのすべてをお読みください。


0

リフレッシュする必要があるときは、次のことを何度も思い出します

ClassNotFoundException

クラス階層

ClassNotFoundException extends ReflectiveOperationException extends Exception extends Throwable

デバッグ中

  1. 必要なjar、クラスがクラスパスにありません。
  2. 必要なすべてのjarがjvmのクラスパスにあることを確認します。

NoClassDefFoundError

クラス階層

NoClassDefFoundError extends LinkageError  extends Error extends Throwable

デバッグ中

  1. 適切にコンパイルされたクラスの動的なロードに関する問題
  2. 静的ブロック、コンストラクター、依存クラスのinit()メソッドの問題、および実際のエラーは複数のレイヤーによってラップされます(特に、Springを使用する場合、実際の例外がラップされ、NoClassDefErrorが発生します)
  3. 依存クラスの静的ブロックの下で「ClassNotFoundException」に直面したとき
  4. クラスのバージョンに問題があります。これは、異なるクラスの2つのバージョンv1、v2が異なるjar / packagesの下にあり、v1を使用して正常にコンパイルされ、v2が関連するメソッド/ varsを持たないランタイムで読み込まれた場合に発生します。この例外が表示されます。[クラスパスに表示された複数のjarの下にあるlog4j関連クラスの重複を削除して、この問題を解決しました]

-1

ClassNotFoundExceptionとNoClassDefFoundErrorは、実行時に特定のクラスが見つからない場合に発生しますが、異なるシナリオで発生します。

ClassNotFoundExceptionは、Class.forName()またはloadClass()メソッドを使用して実行時にクラスをロードしようとしたときに発生する例外であり、言及されたクラスがクラスパスに見つかりません。

    public class MainClass
    {
        public static void main(String[] args)
        {
            try
            {
                Class.forName("oracle.jdbc.driver.OracleDriver");
            }catch (ClassNotFoundException e)
            {
                e.printStackTrace();
            }
        }
    }



    java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at pack1.MainClass.main(MainClass.java:17)

NoClassDefFoundErrorは、コンパイル時に特定のクラスが存在するが、実行時に欠落していた場合に発生するエラーです。

    class A
    {
      // some code
    }
    public class B
    {
        public static void main(String[] args)
        {
            A a = new A();
        }
    }

上記のプログラムをコンパイルすると、2つの.classファイルが生成されます。1つはA.classで、もう1つはB.classです。A.classファイルを削除してB.classファイルを実行すると、Javaランタイムシステムは次のようにNoClassDefFoundErrorをスローします。

    Exception in thread "main" java.lang.NoClassDefFoundError: A
    at MainClass.main(MainClass.java:10)
    Caused by: java.lang.ClassNotFoundException: A
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.