Java ApacheKaraf-缺少依赖项(看起来像是数据源)

Java ApacheKaraf-缺少依赖项(看起来像是数据源),java,osgi,apache-karaf,osgi-bundle,Java,Osgi,Apache Karaf,Osgi Bundle,当我启动Karaf时,我得到以下错误。我的一位同事拥有完全相同的功能、捆绑包等,但没有得到错误。我们都使用Windows10和Karaf4.0.7 如果事实上他只是压缩了他的Karaf文件夹并把它给了我。所以我们的卡拉夫装置是相同的。现在我正试图让它在我的机器上工作 那它怎么能在我本地的机器上不工作呢 我不太了解卡拉夫,所以我不知道如何进一步排除故障。原因可能是什么 可能是我本地Maven repo中的某个jar文件丢失了吗 (我的同事有,但我没有)?我听说Karaf正在这里寻找一些组件

当我启动Karaf时,我得到以下错误。我的一位同事拥有完全相同的功能、捆绑包等,但没有得到错误。我们都使用Windows10和Karaf4.0.7

如果事实上他只是压缩了他的Karaf文件夹并把它给了我。所以我们的卡拉夫装置是相同的。现在我正试图让它在我的机器上工作

那它怎么能在我本地的机器上不工作呢

我不太了解卡拉夫,所以我不知道如何进一步排除故障。原因可能是什么

可能是我本地Maven repo中的某个jar文件丢失了吗 (我的同事有,但我没有)?我听说Karaf正在这里寻找一些组件

            data-access (2381)
            ------------------
            Status: Failure
            Blueprint
            10/15/19 4:51 PM
            Exception:
            null
            java.util.concurrent.TimeoutException
                    at org.apache.aries.blueprint.container.BlueprintContainerImpl$1.run(BlueprintContainerImpl.java:371)
                    at org.apache.aries.blueprint.utils.threading.impl.DiscardableRunnable.run(DiscardableRunnable.java:48)
                    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
                    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
                    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
                    at java.lang.Thread.run(Thread.java:748)

            Missing dependencies:
            (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager)) (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory))
事实上,当我启动Karaf时,我先得到了几分钟,然后我得到了我上面发布的错误

            karaf@root()> bundle:diag
            Bundle 53
            ---------
            Status: Installed
            Unsatisfied Requirements:


            data-access (2384)
            ------------------
            Status: GracePeriod
            Blueprint
            10/15/19 6:36 PM
            Missing dependencies:
            (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory)) (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager))


            website-performance (2385)
            --------------------------
            Status: GracePeriod
            Blueprint
            10/15/19 6:36 PM
            Missing dependencies:
            (&(osgi.unit.name=ybDS)(objectClass=javax.persistence.EntityManagerFactory)) (&(osgi.unit.name=ybkDS)(objectClass=javax.persistence.EntityManager))

我没有的东西是什么?

EntityManager和EntityManagerFactory都依赖于OSGi服务,它们的属性都是OSGi.unit.name=ybkDS。这些服务不会提供。您可以首先在diag中观察到这一点。5分钟后,blueprint容器放弃等待这些服务并记录错误

因此,您必须调试为什么这些服务无法提供。能否提供有关如何实例化EntityManager的更多信息

我猜您使用的是ApacheAries JPA,也可能是ops4j pax jdbc。 在本例中,您需要检查数据源是否启动(也应该是一个OSGi服务),以及是否安装了正确的jpa impl(如hibernate)


如果您可以上传日志(特别是aries和pax jdbc的所有内容),也会有所帮助。

非常感谢您的回复。。。我不确定我是否能做到这一切。正如我所说,我对卡拉夫,奥斯基,所有这些东西都不熟悉。。。如果你能具体指导我在这里提取和上传什么,那就太好了。另外,我的同事有相同的Karaf文件夹,但没有问题。所以我想是卡拉夫的外部原因导致了这些问题。猜猜看……你可以把日志改成“org.ops4j.pax.jdbc”。好的。。。顺便说一句,我开始在你的网站上阅读卡拉夫教程:)但我时间有限,事实上我不需要成为卡拉夫专家。。。我只需要让它运行,以便测试其中的一些web服务。。。谢谢你的帮助,非常感谢。我可以试着在这里和你聊天吗?可以。如果不需要太长时间的话。谢谢,我会看看是否有可能。顺便说一句,我的日志文件中没有关于org.ops4j.pax.jdbc的内容。它只有这个超时错误。我将看看是否可以启用更详细的日志记录。