-2

いくつかの方法 (Google、Stack Overflow...) で試してみましたが、数日以内に次のエラーを解決できませんでした。このエラーは、アプリケーションを実行した場合にのみ発生します。コンパイルは影響を受けません。

org.databene.commons.ConfigurationError: クラスが見つかりません: 'org.databene.benerator.engine.DefaultBeneratorFactory' at org.databene.commons.ExceptionMapper.configurationException(ExceptionMapper.java:121) at org.databene.commons.BeanUtil.forName (BeanUtil.java:358) org.databene.commons.BeanUtil.newInstance(BeanUtil.java:423) で org.databene.benerator.BeneratorFactory.getInstance(BeneratorFactory.java:56) で org.databene.benerator.util. GeneratorUtil.init(GeneratorUtil.java:54) at testGeneration.TestCaseGenerator.generateTests(TestCaseGenerator.java:326)

つまり、DefaultBeneratorFactory クラスのオブジェクトをインスタンス化しようとしても、問題は発生しません。ジェネレーターを開始するメソッドを呼び出すと、エラーが発生します。

GeneratorUtil.init(stringGenerator);

私が開発したアプリケーションは、OS X El Capitan の Intellij Idea Community Edition (バージョン 2016.2.4) のプラグインです。Java 環境は Oracle JDK 8u102 です。私のプラグインは、Jar のセットとしてダウンロードできる Databene Benerator フレームワークを使用しています。対応する jar をライブラリとしてプロジェクトに含めました。

プロジェクト設定のライブラリ

依存関係を参照してください。

プロジェクト設定の依存関係

私はいくつかの提案に従いました:

1) 各 Jar のエクスポート オプションをマークします。リンク

2) 出力パスを変更し、グローバル ライブラリを設定します。リンク

3) 以前のバージョンの IDEA を使用し、以前の JDK、IDEA の無効化キャッシュを試します。

もう 1 つの重要な情報として、私のプラグインの Eclipse バージョンは、同じバージョンの Benerator フレームワークを使用して、同じ環境で完全に機能します。ですから、ここにIDEAの特殊性があると思います。

どんな助けでも大歓迎です!!

問題は、Intellij Idea が jar 内のクラスをどのように処理するかだと思います。DefaultBeneratorFactory.class は、正しいパス org/databene/benerator/engine の jar にあります。誰でもこれを説明できますか?

4

1 に答える 1

0

オイラー 、最も一般的な理由は次のとおりです。実行中にクラスを参照し、例外を与える依存関係を含めました。すべての前提条件が満たされているため、IDE はコンパイル時に文句を言いません。実行時に、これらのクラスを参照する jar/ライブラリが見つからず、例外が発生します。回避するには、これらの依存関係をダウンロードできる、たとえば maven や gradle などのフレームワークを使用するのが最も簡単です。たとえば、mavenize を実行すると、すべての推移的な依存関係がダウンロードされます。それ以外の場合は、これらの jar を手動でダウンロードする必要があります。あなたの場合、次のjarを追加する必要があります。他の deps がある場合、 ClassNOTFOund は引き続き発生するため、一度に 1 つずつ解決する必要があります。HTH

于 2016-09-15T01:06:47.230 に答える