Intellij IDEA {Jar}中的Jar文件中找不到类

时间:2016-09-15 00:32:28

标签: java intellij-idea plugins jar benerator

我已经通过多种方式尝试过(谷歌,Stack Overflow ...),并且几天后解决了以下错误而没有成功。只有在运行应用程序时才会出现此错误。编译不受影响。

  

org.databene.commons.ConfigurationError:找不到类:'org.databene.benerator.engine.DefaultBeneratorFactory'       在org.databene.commons.ExceptionMapper.configurationException(ExceptionMapper.java:121)       在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)       在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。我的插件使用Databene Benerator框架,可以作为一组Jars下载。我在项目中将相应的jar包含为Libraries:

The libraries in Project Settings

请参阅依赖项:

The dependencies in Project Settings

我遵循了一些建议:

1)标记每个Jar的导出选项。 Link

2)更改输出路径和设置全局库。 Link

3)使用以前版本的IDEA,尝试更早的JDK,无效的IDEA缓存。

另一个重要信息,我的插件的Eclipse版本在相同的环境中完全正常运行,具有相同版本的Benerator框架。所以,我认为IDEA有一些特殊性。

非常感谢任何帮助!!

我认为问题在于Intellij Idea如何处理jar中的类。 DefaultBeneratorFactory.class位于正确路径的jar中:org / databene / benerator / engine。有谁能解释一下?

1 个答案:

答案 0 :(得分:0)

欧拉,最常见的原因如下。您已经包含了依赖项,这些依赖项又在执行期间引用了类并为您提供了异常。 IDE将不会在编译时抱怨,因为所有pre-req都已完成,当执行发生时,将找不到引用它们的jar / library这些类,并引发异常。 为了解决这个问题,最简单的方法是使用像maven或gradle这样的框架,例如可以为你下载这些依赖项。例如,当您进行mavenize时,所有传递依赖项都会被下载。否则您将不得不手动下载这些jar。在您的情况下,需要添加following jar。如果有其他deps,ClassNOtFOund仍将继续出现,您需要一次解决一个。 HTH