【发布时间】:2015-05-31 21:51:34
【问题描述】:
有没有人成功让 Squeryl 在 OSGi 环境中工作,特别是在 Karaf 3.03 上。
到目前为止,我已经获得了要加载的各个依赖项、scala 库、squeryl 和 jdbc 驱动程序。安装的包看起来像这样:
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 的实例当前类 ac/za/cput/pe/model/activator/Activator 的 $BundleClassLoaderJava5) 和已解析类 org/squeryl/SessionFactory 的类加载器(org/apache/felix/framework/BundleWiringImpl$BundleClassLoaderJava5 的实例) $,对于签名中使用的类型concreteFactory_$eq有不同的Class对象
有人有什么想法吗?我还有几个小时要跳出阳台:(
【问题讨论】:
标签: scala osgi apache-karaf karaf squeryl