0

我有一个非常奇怪的情况。我有一组 eclipse 插件项目,我使用 tycho 和 maven 来构建它们。我在其中一个项目中使用了 JDBC 驱动程序,并且我有一个测试插件来测试这个项目。由于 com.mysql.jdbc 插件在 eclipse p2 存储库中不可用(而且我们没有自己的 p2),我导入了 jdbc 插件并创建了一个 OSGi 插件并将依赖项添加到我的本地插件中。

我有多个 Eclipse 工作区。只有在创建测试和 jdbc 插件的第一个工作区中,当我使用 eclipse run as -> Junit test 命令运行 junit 测试时,它们才有效。当其他人甚至我检出源代码并尝试在不同的工作区中运行测试时,会抛出此异常:

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

我也尝试使用 tycho 集成测试(运行 mvn 集成测试),但这也不起作用,我仍然得到相同的异常。我尝试了很多搜索,但找不到答案。

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

4

2 回答 2

0

ClassNotFoundExceptionOSGi 运行时中的 s 表示 OSGi 清单中的导入和/或导出声明中有问题。最常见的情况是一个包声称要导出某个包,但实际上并没有该包的二进制文件/类文件。

在 Tycho 构建中,如果您.在.bin.includesbuild.properties

于 2013-04-23T07:39:57.723 回答
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 。

于 2013-04-23T06:48:34.363 回答