有没有人成功让Squeryl在OSGi环境中工作,特别是在Karaf 3.03上。
到目前为止,我已经获得了加载,scala库,squeryl和jdbc驱动程序的各个依赖项。已安装的bundle看起来像这样:
51 | Resolved | 80 | 0.3.0.SNAPSHOT | ac.za.cput.pe.model
52 | Active | 80 | 2.11.6.v20150224-172222-092690e7bf | Scala Standard Library
53 | Active | 80 | 0 | wrap_mvn_org.squeryl_squeryl_2.10_0.9.5-6
54 | Active | 80 | 2.10.0.v20121205-112020-VFINAL-18481cef9b | Scala Standard Library
55 | Active | 80 | 0 | wrap_mvn_cglib_cglib-nodep_2.2
56 | Active | 80 | 0 | wrap_mvn_org.scala-lang_scalap_2.10.0
57 | Active | 80 | 2.10.0.v20121205-112020-VFINAL-18481cef9b | Scala Compiler
58 | Active | 80 | 2.10.0.v20121205-112020-VFINAL-18481cef9b | Scala Reflect
59 | Active | 80 | 0 | wrap_mvn_postgresql_postgresql_9.1-901-1.jdbc4
在我的包中,我的代码如下:
Class.forName("org.postgresql.Driver")
SessionFactory.concreteFactory = Some(()=>
Session.create(
java.sql.DriverManager.getConnection("jdbc:postgresql://localhost:5432/pe","postgres"
,"12345"),new PostgreSqlAdapter
)
)
基本上尝试创建squeryl会话工厂。
然而,当我启动karaf时,这是我得到的错误:
java.lang.LinkageError:加载器约束违规:解析方法时“org.squeryl.SessionFactory $ .concreteFactory_ $ eq(Lscala / Option;)V”类加载器(org / apache / felix / framework / BundleWiringImpl的实例) $ BundleClassLoaderJava5)当前类,ac / za / cput / pe / model / activator / Activator,以及类加载器(org / apache / felix / framework / BundleWiringImpl $ BundleClassLoaderJava5的实例),用于已解析的类,org / squeryl / SessionFactory $,具有签名
中使用的concreteFactory_ $ eq类型的不同Class对象
有没有人有任何想法?我跳出阳台几个小时:(
答案 0 :(得分:0)
看起来很像你有一些不同的罐子。 首先确保正确导入所有依赖项。其次,请确保您不会将这些依赖项部分嵌入您自己的捆绑包中。 错误消息非常清楚该问题。
您使用的是与运行时提供给您的版本不同的版本。这可能是因为导入错误(确保版本匹配)或您在包中包含不同版本的包。