2016-09-15 66 views
-2

我嘗試了幾種方法(Google,Stack Overflow ...),並在幾天內解決了以下錯誤,但沒有成功。這個錯誤只發生在我運行應用程序時。編譯不受影響。在Intellij IDEA的Jar文件中找不到的類

org.databene.commons.ConfigurationError: Class not found: 'org.databene.benerator.engine.DefaultBeneratorFactory' at org.databene.commons.ExceptionMapper.configurationException(ExceptionMapper.java:121) at org.databene.commons.BeanUtil.forName(BeanUtil.java:358) at org.databene.commons.BeanUtil.newInstance(BeanUtil.java:423) at org.databene.benerator.BeneratorFactory.getInstance(BeneratorFactory.java:56) at org.databene.benerator.util.GeneratorUtil.init(GeneratorUtil.java:54) at testGeneration.TestCaseGenerator.generateTests(TestCaseGenerator.java:326)

也就是說,如果我嘗試實例DefaultBeneratorFactory類的一個對象,看上去沒有什麼問題。

GeneratorUtil.init(stringGenerator);

我已經開發的應用程序是在OS X埃爾卡皮坦爲IntelliJ IDEA的社區版插件(2016年2月4日的版本):當我調用一個方法來啓動發電機的錯誤表現。 Java環境是Oracle JDK 8u102。我的插件使用Databene Benerator框架,可以作爲一組Jars下載。我包括在項目對應的瓶當庫:

The libraries in Project Settings

見依存:

The dependencies in Project Settings

我跟一些建議:

1)標記爲每個導出選項罐。 Link

2)更改輸出路徑並設置全局庫。 Link

3)使用以前版本的IDEA,嘗試更早的JDK,使IDEA無效緩存。

另一個重要的信息,我的插件的Eclipse版本在相同的環境中具有完全的功能,具有相同版本的Benerator框架。所以,我認爲這裏有一些IDEA的特殊性。

任何幫助非常感謝!

我認爲問題在於Intellij Idea如何處理jar中的類。 DefaultBeneratorFactory.class位於正確路徑的jar中:org/databene/benerator/engine。任何人都可以解釋這個

回答

0

歐拉,最常見的原因是以下幾點。您已經包含了依賴關係,這些依賴關係在執行過程中引用這些類併爲您提供一個Exception。 IDE不會在編譯時抱怨,因爲所有的pre-req都會被執行,當執行發生時,這些類將不會被引用它們的jar /庫找到,並引發異常。 爲了解決這個問題,最簡單的方法就是使用像maven或gradle這樣的框架,它可以爲你下載這些依賴關係。例如,當您將所有傳遞性依賴關係下載後,您將不得不手動下載這些罐子。在你的情況下,需要添加following jar。如果還有其他的代理商,ClassNOtFOund將繼續提供,您需要逐一解決。 HTH

+0

Ramachandran,您提到了一個已添加到我的Idea項目中的jar。實際上,指出錯誤的類是在jar數據塊中。 – EulerM

相關問題