java - Apache Karaf - 缺少依赖项(看起来是数据源)

标签 java osgi apache-karaf osgi-bundle

启动 Karaf 时出现以下错误。我的一位同事具有完全相同的功能、 bundle 等,但没有收到错误消息。我们都使用 Windows 10 和 Karaf 4.0.7。

事实上,他只是压缩了他的 Karaf 文件夹并将其给了我。所以我们的 Karaf 安装是相同的。现在我正在尝试让它在我的机器上运行。

那么它怎么可能无法在我的本地计算机上运行呢?

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

我的本​​地 Maven 存储库中是否缺少某些 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 分钟后,蓝图容器放弃等待这些服务并记录错误。

所以你必须调试为什么这些服务没有出现。您能否提供有关如何实例化 EntityManager 的更多信息?

我猜您正在使用 Apache Aries JPA,也许还有 ops4j pax-jdbc。 在这种情况下,您需要检查 DataSource 是否出现(也应该是 OSGi 服务)以及您是否安装了正确的 jpa impl(如 hibernate)。

如果您可以上传日志(尤其是来自 aries 和 pax-jdbc 的所有内容),也会有帮助。

关于java - Apache Karaf - 缺少依赖项(看起来是数据源),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58403255/

相关文章:

osgi - PAX 考试 - 类未找到错误

java - 如何通过 Hibernate 逆向工程使用 Hibernate Tools 生成 "Single DB"的模型代码

java - Android Wi-Fi 直连网络

java - OSGi Felix 依赖管理器注解和抽象类

osgi - 如何使用 Maven bundle 插件从包中排除包

dependency-injection - bundle 中的蓝图依赖注入(inject)

osgi - 将 Apache Felix SCR 更新到 OSGi 声明式服务 R6 - @Property

java - Hibernate 检索父/子

java - log4j 仅使用 log4j.xml 创建文件名中带有时间戳的日志文件

ssl - 如何为 apache karaf 添加 SSL 连接器?