【发布时间】:2015-08-10 23:36:01
【问题描述】:
我已经用 maven 为 Karaf 构建了一个捆绑包,并包含了 org.postgresql 依赖项
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.4-1201-jdbc41</version>
</dependency>
我还将最新版本的 jar 包含到 Karaf 的 lib/ext/ 目录中。
捆绑包已正确加载。但是,在运行时,当捆绑包尝试加载驱动程序时:
Class.forName("org.postgresql.Driver");
我收到以下错误:
2015-05-28 14:36:07,218 | ERROR | qtp1270203840-47 | MyBundleServlet | 124 - MyBundle - 1.0.0.SNAPSHOT | org.postgresql.Driver not found by MyBundle [124]
java.lang.ClassNotFoundException: org.postgresql.Driver not found by MyBundle [124]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1532)[org.apache.felix.framework-4.2.1.jar:]
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:75)[org.apache.felix.framework-4.2.1.jar:]
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1955)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)[:1.7.0_75]
at java.lang.Class.forName0(Native Method)[:1.7.0_75]
at java.lang.Class.forName(Class.java:191)[:1.7.0_75]
...
我还有什么要补充的吗?
【问题讨论】:
-
在我看来这是一个不同的问题,因为我需要 karaf 才能看到其
lib/ext文件夹中的库.. -
你确定吗?那个问题和你的问题都围绕着让一个包可以访问数据库驱动程序......这就是为什么我认为这对你来说是一个很好的地方。
-
是的,谢谢,反正我试过了,还是不行。事实上,我不想将我的依赖项嵌入到包中,而是让 karaf 独立加载它..
-
在这种情况下,您应该首先在 POM 中使用
<scope>provided</scope>声明依赖关系。除此之外我对卡拉夫不熟悉,不知道需要做什么......
标签: java postgresql maven jdbc apache-karaf