gpt4 book ai didi

java - Quartz Scheduler 和对 Karaf 的使用依赖性不启动 OSGi 包

转载 作者:行者123 更新时间:2023-11-30 06:49:18 24 4
gpt4 key购买 nike

我正在尝试在 Apache Karaf 上使用 Quartz Scheduler:

我在 Apache Karaf Github page 上使用了调度程序示例.

在我的 IDE 上,我执行了一个示例,它工作正常,但我无法在 Karaf 下安装和启动包。

这是包的 POM 导入和导出:

    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
<Bundle-Version>${project.version}</Bundle-Version>
<Export-Package>
com.schedule*;version=${project.version}
</Export-Package>
<Import-Package>
!com.mchange.*,
!oracle.*,
!org.quartz.management,
!weblogic.*,
!javax.transaction,
*
</Import-Package>
<Private-Package>
org.apache.karaf.scheduler.core,
org.apache.karaf.scheduler.command.*,
org.quartz,
org.quartz.core.*,
org.quartz.listeners.*,
org.quartz.impl.*,
org.quartz.spi.*,
org.quartz.simpl.*,
org.quartz.utils.*,
</Private-Package>

问题是 Karaf 导入包和排除项。这是 Karaf 日志:

    Caused by: java.lang.NoClassDefFoundError: org/quartz/ee/jta/JTAAnnotationAwareJobRunShellFactory
at org.quartz.impl.StdSchedulerFactory.instantiate(StdSchedulerFactory.java:1204)
at org.quartz.impl.StdSchedulerFactory.getScheduler(StdSchedulerFactory.java:1519)
at com.soprahr.hub.bc.schedule.core.SimpleSchedule.init(SimpleSchedule.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.aries.blueprint.utils.ReflectionUtils.invoke(ReflectionUtils.java:299)
at org.apache.aries.blueprint.container.BeanRecipe.invoke(BeanRecipe.java:980)
at org.apache.aries.blueprint.container.BeanRecipe.runBeanProcInit(BeanRecipe.java:736)
... 38 more
Caused by: java.lang.ClassNotFoundException: org.quartz.ee.jta.JTAAnnotationAwareJobRunShellFactory not found by com.schedule. [311]
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1574)
at org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:79)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2018)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 48 more

最佳答案

感谢您的帮助,包装 Quartz jar 可以帮助解决此问题并将依赖项用作 jar。这就是为什么我们需要这些依赖项:

   <dependency>
<groupId>org.apache.servicemix.bundles</groupId>
<artifactId>org.apache.servicemix.bundles.quartz</artifactId>
<version>2.2.3_1</version>
</dependency>

<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>

<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>

要在 Karaf 中安装它,我们可以使用这些带有 wrap 前缀的命令:

 bundle:install wrap:mvn:c3p0/c3p0/0.9.1.2
bundle:install mvn:org.quartz-scheduler/quartz/2.2.2
bundle:install wrap:mvn:org.quartz-scheduler/quartz-jobs/2.2.2

我在这个页面上得到了答案:Quartz scheduler and OSGI

关于java - Quartz Scheduler 和对 Karaf 的使用依赖性不启动 OSGi 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43033161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com