【问题标题】:Avoid namespace conflicts in Java MPI-Bindings避免 Java MPI 绑定中的命名空间冲突
【发布时间】:2012-11-01 21:38:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: scala namespaces mpj-express name-clash


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为这行不通,因为我需要添加的两个 jar 都包含一个名为 mpi.MPI 的类。这不是问题,因为我可以热交换 jar 文件,但是在某些方法(错误地)大写的库中甚至存在不一致...
    • @Felix 好点。您可以使用JarJar 重命名包:radomirml.com/2009/11/08/… 我必须承认我从未尝试过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    相关资源
    最近更新 更多