[
https://issues.apache.org/jira/browse/KARAF-6345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16936704#comment-16936704
]
Toni Lappalainen commented on KARAF-6345:
-----------------------------------------
In our project, we possibly have the same issue. I stripped down the project as
much as possible while still being able to reproduce the issue.
This is the features.xml
{code:java}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<features name="test-db-1.2.3"
xmlns="http://karaf.apache.org/xmlns/features/v1.4.0">
<feature name="install-bundles" version="1.2.3">
<feature>scr</feature>
<feature>akka</feature>
<feature prerequisite="true">akka-persistence</feature>
<!-- <bundle start="false">mvn:com.test.my/test-db/1.2.3</bundle> -->
</feature>
<feature name="start-bundles" version="1.2.3">
<feature>install-bundles</feature>
<bundle start-level="75">mvn:com.test.my/test-db/1.2.3</bundle>
</feature>
<feature name="scala" version="2.12.8">
<bundle dependency="true"
start-level="20">mvn:org.scala-lang/scala-library/2.12.8</bundle>
<bundle dependency="true"
start-level="20">mvn:org.scala-lang/scala-reflect/2.12.8</bundle>
<bundle dependency="true"
start-level="20">mvn:org.scala-lang.modules/scala-java8-compat_2.12/0.8.0</bundle>
</feature>
<feature name="akka" version="2.5.25">
<feature prerequisite="true">wrap</feature>
<feature>scala</feature>
<bundle dependency="true"
start-level="30">mvn:com.typesafe.akka/akka-actor_2.12/2.5.25</bundle>
<bundle dependency="true"
start-level="30">mvn:com.typesafe.akka/akka-osgi_2.12/2.5.25</bundle>
<bundle dependency="true"
start-level="30">mvn:com.typesafe.akka/akka-slf4j_2.12/2.5.25</bundle>
<bundle dependency="true"
start-level="30">mvn:com.typesafe.akka/akka-protobuf_2.12/2.5.25</bundle>
<bundle dependency="true"
start-level="30">mvn:com.typesafe/config/1.3.4</bundle>
</feature>
<feature name="akka-persistence" version="2.5.25">
<feature prerequisite="true">leveldb</feature>
<bundle dependency="true"
start-level="30">mvn:com.typesafe.akka/akka-persistence_2.12/2.5.25</bundle>
</feature>
<feature name="leveldb" version="2.5.25">
<feature prerequisite="true">wrap</feature>
<bundle dependency="true"
start-level="20">wrap:mvn:org.iq80.leveldb/leveldb/0.9</bundle>
<bundle dependency="true"
start-level="20">mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8</bundle>
</feature>
</features>
{code}
When I run feature:install -v start-bundles
{code:java}
karaf@root()> feature:install -v start-bundles
Adding features: start-bundles/[1.2.3,1.2.3]
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.wrap/4.2.4
mvn:org.ops4j.pax.url/pax-url-wrap/2.6.1/jar/uber
Installing bundles:
mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.wrap/4.2.4
mvn:org.ops4j.pax.url/pax-url-wrap/2.6.1/jar/uber
Starting bundles:
org.ops4j.pax.url.wrap/2.6.1
org.apache.karaf.deployer.wrap/4.2.4
Done.
No deployment change.
Done.
No deployment change.
Done.
Changes to perform:
Region: root
Bundles to install:
mvn:com.typesafe.akka/akka-actor_2.12/2.5.25
mvn:com.typesafe.akka/akka-osgi_2.12/2.5.25
mvn:com.typesafe.akka/akka-persistence_2.12/2.5.25
mvn:com.typesafe.akka/akka-protobuf_2.12/2.5.25
mvn:com.typesafe.akka/akka-slf4j_2.12/2.5.25
mvn:com.typesafe/config/1.3.4
mvn:org.apache.felix/org.apache.felix.scr/2.1.16
mvn:org.apache.karaf.scr/org.apache.karaf.scr.management/4.2.4
mvn:org.apache.karaf.scr/org.apache.karaf.scr.state/4.2.4
mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8
mvn:org.osgi/org.osgi.util.function/1.0.0
mvn:org.osgi/org.osgi.util.promise/1.0.0
mvn:org.scala-lang.modules/scala-java8-compat_2.12/0.8.0
mvn:org.scala-lang/scala-library/2.12.8
mvn:com.test.my/test-db/1.2.3
wrap:mvn:org.iq80.leveldb/leveldb/0.9
Installing bundles:
mvn:com.typesafe.akka/akka-actor_2.12/2.5.25
mvn:com.typesafe.akka/akka-osgi_2.12/2.5.25
mvn:com.typesafe.akka/akka-persistence_2.12/2.5.25
mvn:com.typesafe.akka/akka-protobuf_2.12/2.5.25
mvn:com.typesafe.akka/akka-slf4j_2.12/2.5.25
mvn:com.typesafe/config/1.3.4
mvn:org.apache.felix/org.apache.felix.scr/2.1.16
mvn:org.apache.karaf.scr/org.apache.karaf.scr.management/4.2.4
mvn:org.apache.karaf.scr/org.apache.karaf.scr.state/4.2.4
mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8
mvn:org.osgi/org.osgi.util.function/1.0.0
mvn:org.osgi/org.osgi.util.promise/1.0.0
mvn:org.scala-lang.modules/scala-java8-compat_2.12/0.8.0
mvn:org.scala-lang/scala-library/2.12.8
mvn:com.test.my/test-db/1.2.3
wrap:mvn:org.iq80.leveldb/leveldb/0.9
Starting bundles:
org.fusesource.leveldbjni.leveldbjni-all/1.8.0
org.scala-lang.scala-library/2.12.8.v20181128-140630-VFINAL-38cd84d
wrap_file__C__Users_Username_.m2_repository_org_iq80_leveldb_leveldb_0.9_leveldb-0.9.jar/0.0.0
org.scala-lang.modules.scala-java8-compat/0.8.0
org.osgi.util.function/1.0.0.201505202023
org.osgi.util.promise/1.0.0.201505202023
org.apache.felix.scr/2.1.16
org.apache.karaf.scr.state/4.2.4
com.typesafe.akka.protobuf/2.5.25
com.typesafe.config/1.3.4
org.apache.karaf.scr.management/4.2.4
com.typesafe.akka.slf4j/2.5.25
com.typesafe.akka.osgi/2.5.25
com.typesafe.akka.actor/2.5.25
com.typesafe.akka.persistence/2.5.25
test-db/1.2.3
Done.
karaf@root()> Uncaught error from thread
[actor-system-akka.actor.default-dispatcher-3]: org/iq80/leveldb/DBFactory,
shutting down JVM since 'akka.jvm-exit-on-fatal-error' is enabled for
ActorSystem[actor-system]
java.lang.NoClassDefFoundError: org/iq80/leveldb/DBFactory
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getDeclaredConstructors(Class.java:2020)
at akka.util.Reflect$.findConstructor(Reflect.scala:92)
at
akka.persistence.Persistence.akka$persistence$Persistence$$createPlugin(Persistence.scala:408)
at
akka.persistence.Persistence$PluginHolderExtensionId.createExtension(Persistence.scala:443)
at
akka.persistence.Persistence$PluginHolderExtensionId.createExtension(Persistence.scala:433)
at akka.actor.ActorSystemImpl.registerExtension(ActorSystem.scala:1006)
at akka.actor.ExtensionId.apply(Extension.scala:79)
at akka.actor.ExtensionId.apply$(Extension.scala:78)
at
akka.persistence.Persistence$PluginHolderExtensionId.apply(Persistence.scala:433)
at akka.persistence.Persistence.pluginHolderFor(Persistence.scala:391)
at akka.persistence.Persistence.journalConfigFor(Persistence.scala:338)
at akka.persistence.Eventsourced.$init$(Eventsourced.scala:97)
at com.test.db.DB.<init>(DB.scala:6)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at akka.util.Reflect$.instantiate(Reflect.scala:46)
at
akka.actor.NoArgsReflectConstructor.produce(IndirectActorProducer.scala:110)
at akka.actor.Props.newActor(Props.scala:212)
at akka.actor.ActorCell.newActor(ActorCell.scala:648)
at akka.actor.ActorCell.create(ActorCell.scala:674)
at akka.actor.ActorCell.invokeAll$1(ActorCell.scala:547)
at akka.actor.ActorCell.systemInvoke(ActorCell.scala:569)
at akka.dispatch.Mailbox.processAllSystemMessages(Mailbox.scala:293)
at akka.dispatch.Mailbox.run(Mailbox.scala:228)
at akka.dispatch.Mailbox.exec(Mailbox.scala:241)
at akka.dispatch.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
at
akka.dispatch.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
at akka.dispatch.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
at
akka.dispatch.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
Caused by: java.lang.ClassNotFoundException: org.iq80.leveldb.DBFactory not
found by com.typesafe.akka.persistence [47]
at
org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639)
at
org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
at
org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 34 more
{code}
I have a workaround for this. If I uncomment <bundle
start="false">mvn:com.test.my/test-db/1.2.3</bundle> in install-bundles feature
the feature installation succeeds.
{code:java}
karaf@root()> feature:install -v start-bundles
Adding features: start-bundles/[1.2.3,1.2.3]
Changes to perform:
Region: root
Bundles to install:
mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.wrap/4.2.4
mvn:org.ops4j.pax.url/pax-url-wrap/2.6.1/jar/uber
Installing bundles:
mvn:org.apache.karaf.deployer/org.apache.karaf.deployer.wrap/4.2.4
mvn:org.ops4j.pax.url/pax-url-wrap/2.6.1/jar/uber
Starting bundles:
org.ops4j.pax.url.wrap/2.6.1
org.apache.karaf.deployer.wrap/4.2.4
Done.
No deployment change.
Done.
No deployment change.
Done.
Changes to perform:
Region: root
Bundles to install:
mvn:com.typesafe.akka/akka-actor_2.12/2.5.25
mvn:com.typesafe.akka/akka-osgi_2.12/2.5.25
mvn:com.typesafe.akka/akka-persistence_2.12/2.5.25
mvn:com.typesafe.akka/akka-protobuf_2.12/2.5.25
mvn:com.typesafe.akka/akka-slf4j_2.12/2.5.25
mvn:com.typesafe/config/1.3.4
mvn:org.apache.felix/org.apache.felix.scr/2.1.16
mvn:org.apache.karaf.scr/org.apache.karaf.scr.management/4.2.4
mvn:org.apache.karaf.scr/org.apache.karaf.scr.state/4.2.4
mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8
mvn:org.osgi/org.osgi.util.function/1.0.0
mvn:org.osgi/org.osgi.util.promise/1.0.0
mvn:org.scala-lang.modules/scala-java8-compat_2.12/0.8.0
mvn:org.scala-lang/scala-library/2.12.8
mvn:com.test.my/test-db/1.2.3
wrap:mvn:org.iq80.leveldb/leveldb/0.9
Installing bundles:
mvn:com.typesafe.akka/akka-actor_2.12/2.5.25
mvn:com.typesafe.akka/akka-osgi_2.12/2.5.25
mvn:com.typesafe.akka/akka-persistence_2.12/2.5.25
mvn:com.typesafe.akka/akka-protobuf_2.12/2.5.25
mvn:com.typesafe.akka/akka-slf4j_2.12/2.5.25
mvn:com.typesafe/config/1.3.4
mvn:org.apache.felix/org.apache.felix.scr/2.1.16
mvn:org.apache.karaf.scr/org.apache.karaf.scr.management/4.2.4
mvn:org.apache.karaf.scr/org.apache.karaf.scr.state/4.2.4
mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8
mvn:org.osgi/org.osgi.util.function/1.0.0
mvn:org.osgi/org.osgi.util.promise/1.0.0
mvn:org.scala-lang.modules/scala-java8-compat_2.12/0.8.0
mvn:org.scala-lang/scala-library/2.12.8
mvn:com.test.my/test-db/1.2.3
wrap:mvn:org.iq80.leveldb/leveldb/0.9
Starting bundles:
org.scala-lang.scala-library/2.12.8.v20181128-140630-VFINAL-38cd84d
org.fusesource.leveldbjni.leveldbjni-all/1.8.0
wrap_file__C__Users_Username_.m2_repository_org_iq80_leveldb_leveldb_0.9_leveldb-0.9.jar/0.0.0
org.scala-lang.modules.scala-java8-compat/0.8.0
org.osgi.util.function/1.0.0.201505202023
org.osgi.util.promise/1.0.0.201505202023
org.apache.felix.scr/2.1.16
com.typesafe.config/1.3.4
com.typesafe.akka.osgi/2.5.25
org.apache.karaf.scr.management/4.2.4
com.typesafe.akka.protobuf/2.5.25
com.typesafe.akka.persistence/2.5.25
com.typesafe.akka.slf4j/2.5.25
org.apache.karaf.scr.state/4.2.4
com.typesafe.akka.actor/2.5.25
Done.
{code}
> Optional imports do not propagate to OSGi framework
> ---------------------------------------------------
>
> Key: KARAF-6345
> URL: https://issues.apache.org/jira/browse/KARAF-6345
> Project: Karaf
> Issue Type: Bug
> Components: karaf
> Affects Versions: 4.2.4, 4.2.5, 4.2.6
> Reporter: Robert Varga
> Assignee: Jean-Baptiste Onofré
> Priority: Critical
> Fix For: 4.3.0, 4.2.8
>
>
> Based on
> [https://lists.apache.org/thread.html/bf9e724cc9715b2a568bac7537a7be4a8df85867a2126bbd14e4e79d@%3Cdev.karaf.apache.org%3E]
> The problem is that:
> {noformat}
> java.lang.NoClassDefFoundError: org/iq80/leveldb/DBFactory
> at java.lang.Class.getDeclaredConstructors0(Native Method)
> at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
> at java.lang.Class.getDeclaredConstructors(Class.java:2020)
> at akka.util.Reflect$.findConstructor(Reflect.scala:92)
> at
> akka.persistence.Persistence.akka$persistence$Persistence$$createPlugin(Persistence.scala:408)
> [snip]
> Caused by: java.lang.ClassNotFoundException: org.iq80.leveldb.DBFactory
> cannot be found by com.typesafe.akka.persistence_2.5.23
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:484)
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:395)
> at
> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:387)
> at
> org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:150)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> ... 32 more{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)