2016-09-15 64 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

相关问题