c3p0JARでJavaプロテクトを使用しています。私のプロジェクトを日食作品でコンパイルします。エラーなどはありません。しかし、アプリケーションを実行しようとすると、次のように表示されます。
java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources
jarファイルにc3p0の他のjarファイルを与える必要がありますか?または、アプリケーションを起動するときにそれらをリンクできますか?
c3p0JARでJavaプロテクトを使用しています。私のプロジェクトを日食作品でコンパイルします。エラーなどはありません。しかし、アプリケーションを実行しようとすると、次のように表示されます。
java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources
jarファイルにc3p0の他のjarファイルを与える必要がありますか?または、アプリケーションを起動するときにそれらをリンクできますか?
注:Eclipseの外部で実行している場合の問題であると理解しました。
クラスのロードを担当する標準のJavaクラスローダーは、jarファイル内のjarファイルを理解しないため、別のことを行う必要があります。
EclipseのFile->Export->Runnable jar
オプションは、選択した内容に基づいて3つすべてを実行できます。最終ユーザーにクラスを提供する方法に最も適したものを選択してください。
個人的には、元のjarファイルを保持しながら、Javaでサポートされているものに最も近い「生成されたjarの横にあるjar」が好きです。最も単純なものはすべてのクラスをマージする可能性が最も高いですが、より高度になると、いくつかの欠点があることに気付くでしょう。この時点では、ほとんどの場合、それらに遭遇することはありません。
Eclipseの外部jarとしてC3P0を追加します
サンプルを実行したときに、クラスパスにc3p0を追加しなかったようです。
ただし、Eclipseにmavenおよびm2eプラグインを使用して、以下を追加することはできます。
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
あなたが持っている他の依存関係の横に。
mvn eclipseの後:eclipseを実行すると、正しいクラスパスを持つプロジェクトが作成されます。