1

c3p0JARでJavaプロテクトを使用しています。私のプロジェクトを日食作品でコンパイルします。エラーなどはありません。しかし、アプリケーションを実行しようとすると、次のように表示されます。

java.lang.NoClassDefFoundError: com/mchange/v2/c3p0/DataSources

jarファイルにc3p0の他のjarファイルを与える必要がありますか?または、アプリケーションを起動するときにそれらをリンクできますか?

4

3 に答える 3

2

注:Eclipseの外部で実行している場合の問題であると理解しました。

クラスのロードを担当する標準のJavaクラスローダーは、jarファイル内のjarファイルを理解しないため、別のことを行う必要があります。

  • 使用するすべてのjarファイルのすべてのクラスを単一のjarファイルにマージできます。(この時点で推奨されますが、一般的な推奨ではありません
  • 単一のjarファイル内にjarファイルを配置し、これを理解する特別なクラスローダーを使用できます。
  • 参照されるjarをクラスファイルを含む単一のjarファイルの「隣」に配置し、実行可能なjarにそれらを参照するために必要なMANIFEST.MFvoodoを含めることができます。

EclipseのFile->Export->Runnable jarオプションは、選択した内容に基づいて3つすべてを実行できます。最終ユーザーにクラスを提供する方法に最も適したものを選択してください。

個人的には、元のjarファイルを保持しながら、Javaでサポートされているものに最も近い「生成されたjarの横にあるjar」が好きです。最も単純なものはすべてのクラスをマージする可能性が最も高いですが、より高度になると、いくつかの欠点があることに気付くでしょう。この時点では、ほとんどの場合、それらに遭遇することはありません。

于 2012-08-26T21:51:30.737 に答える
0

Eclipseの外部jarとしてC3P0を追加します

于 2012-08-26T21:30:36.393 に答える
0

サンプルを実行したときに、クラスパスにc3p0を追加しなかったようです。

ただし、Eclipseにmavenおよびm2eプラグインを使用して、以下を追加することはできます。

 <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
 </dependency>

あなたが持っている他の依存関係の横に。

mvn eclipseの後:eclipseを実行すると、正しいクラスパスを持つプロジェクトが作成されます。

于 2012-08-26T21:37:05.857 に答える