我正在为我的当前项目使用MPJ-api。我使用的两个实现是MPJ-express和Fast-MPJ。但是,由于它们都实现了相同的API,即MPJ-API,因此由于名称空间冲突,我不能同时支持这两种实现。
有没有办法用相同的包和类名包装两个不同的库,以便在Java或Scala中同时支持这两个库?
到目前为止,我能想到的唯一方法是将模块移到单独的项目中,但我不确定这是不是可行的方法。
发布于 2012-11-13 22:17:14
如果您的代码只使用MPI函数的一个子集(就像我所讨论的大多数MPI代码一样),那么您可以编写一个抽象层(特征,甚至是Cake-Pattern)来定义您实际使用的操作。然后,可以为每个实现实现一个具体的适配器。
这种方法也适用于非MPI通信层(考虑Akka、JGroups等)
作为额外的好处,您可以使用SLF4J方法:在运行时根据类路径中的实际内容选择正确的实现。
https://stackoverflow.com/questions/13361074
复制相似问题