启动 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/