代码之家  ›  专栏  ›  技术社区  ›  kubo44

找不到H2捆绑依赖项

  •  0
  • kubo44  · 技术社区  · 8 年前

    我在eclipse RCP应用程序中使用H2包。它使用如下java实现:

    create alias MY_FUNCTION for "com.fun.MyFunctions.myFunction";
    

    其中,MyFunctions是公共类,myFunction是公共静态方法。

    它适用于H2版本1.3.170或更高版本,因为清单中有以下声明。MF:

    DynamicImport-Package: *
    

    新的H2版本不再有这个声明,因此我得到了ClassNotFound异常。

    在H2的git日志中,我找到了以下注释(对于commit removing DynamicImport):

    改进的OSGi支持。H2现在注册为DataSourceFactory 服务修复了问题365。

    文档不是很有用: http://www.h2database.com/html/tutorial.html#osgi

    你知道我现在如何添加依赖关系吗?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Tim Ward    8 年前

    H2移动到使用 DataSourceFactory 因为这是获得 Driver DataSource .实际上与 DynamicImport-Package: * 通配符动态导入的使用可能是专门为解决您的用例而添加的,但它从根本上讲是一种非常糟糕的模块化实践,可能会导致各种问题。例如,在删除捆绑包后,无法阻止H2尝试加载函数。

    假设函数不太复杂,最好将其注册为Java源代码。对此进行了解释 in the H2 docs 也不太复杂。实际上,您可以注册别名,但Java源代码以美元符号标记:

    CREATE ALIAS MY_FUNCTION AS $$
    String myFunction(String arg) {
    
        // Your implementation goes in here
    
        return arg;
    }
    $$;
    
    推荐文章