避免Java MPI-Bindings中的命名空间冲突

时间:2012-11-13 12:51:48

标签: scala namespaces mpj-express name-clash

我正在使用MPJ-api来完成我当前的项目。我使用的两个实现是MPJ-express和Fast-MPJ。但是,由于它们都实现了相同的API,即MPJ-API,因为名称空间冲突,我无法同时支持这两种实现。

有没有办法用相同的包和类名包装两个不同的库,以便在Java或Scala中同时支持它们?

到目前为止,我能想到的唯一方法是将模块移动到单独的项目中,但我不确定这是否可行。

1 个答案:

答案 0 :(得分:0)

如果你的代码只使用MPI函数的一个子集(就像我所评论过的大多数MPI代码那样),你可以编写一个抽象层(traits甚至Cake-Pattern)来定义你实际使用的操作。然后,您可以为每个实现实现具体的适配器。

这种方法也适用于非MPI通信层(想想Akka,JGroups等)

作为奖励点,您可以使用SLF4J方法:根据类路径中的实际内容在运行时选择正确的实现。