2013-04-22 35 views
0

我有一个非常奇怪的情况。我有一套eclipse插件项目,我正在使用tycho和maven来构建它们。我在其中一个项目中使用了JDBC驱动程序,并且我有一个测试插件来测试此项目。由于com.mysql.jdbc插件在eclipse p2存储库中不可用(并且我们没有自己的p2),因此我导入了jdbc插件并创建了一个OSGi插件,并将依赖项添加到我的本地插件中。JUnit测试在java.lang.ClassNotFoundException中失败:Tycho环境中的com.mysql.jdbc.Driver

我有多个eclipse工作空间坐起来。只有在创建测试和jdbc插件的第一个工作空间中,junit测试正在运行,当我使用eclipse运行它们作为 - > Junit测试命令时。当其他人,甚至我签的源代码,并尝试运行在不同的工作区中的试验,这将引发异常:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

我也利用第谷的集成测试(乳宁MVN集成测试)试图但这并不既不工作,我仍然得到同样的例外。我试图寻找这个很多,但我找不到答案。

更新:我认为这不是一个tycho问题。我只是尝试基于com.jdbc.mysql jar创建eclipse插件。我创建这个工作区正常工作。但是,只要我提交代码并将项目导入另一个工作区,测试就会停止工作。所有设置在两个工作空间中都是相同的,其中一个工作,另一个获取ClassNotFound异常!

+0

我有一个非常类似的问题,我以为我错过了在Tycho/EclipseRCP环境中使用Junit的一些东西。所以上周,我问了这个问题:http://stackoverflow.com/questions/16166866/how-to-follow-test-first-approach-with-equinox-osgi-tycho-eclipse-rcp-enviro 现在我对这个问题有更多的暗示,我简单地将它解释为oberlies的回答下的一个评论。我假设系统/配置级别有问题。此外,我认为以下关于配置的所有答案只有在您根本无法运行测试时才会有所帮助。 – 2013-04-29 10:12:16

回答

0

Tycho基于测试包的传递依赖性计算OSGi运行时。 你可能对MySQL的驱动程序软件包没有设计时的依赖(而只是对JDBC接口它实现)

尝试增加对MySQL JDBC驱动程序包测试运行时依赖。 有关如何操作,请参阅http://wiki.eclipse.org/Tycho/FAQ#How_to_add_a_undeclared_dependency.3F__.28e.g..2C_OSGi_declarative_service.29

+0

我试着向JDBC添加依赖关系,但不幸的是这并没有解决问题。 – rozagh 2013-04-25 18:12:19

0

ClassNotFoundException s在OSGi运行时中表明OSGi清单中的导入和/或导出声明存在错误。最常见的情况是bundle声称导出某个包,但实际上并没有该包的二进制文件/类文件。

在Tycho构建中,如果build.properties中的bin.includes属性中没有条目.,则很容易发生这种情况。

+0

感谢@oberlies,但我之前检查过这些。包已导出,构建属性正确。但是我仍然得到了classNotFoundException! – rozagh 2013-04-25 18:11:11

相关问题