activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jiri Daněk (JIRA) <j...@apache.org>
Subject [jira] [Commented] (ARTEMIS-1783) Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError: com/google/common/base/Supplier
Date Wed, 04 Apr 2018 15:00:05 GMT

    [ https://issues.apache.org/jira/browse/ARTEMIS-1783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16425657#comment-16425657
] 

Jiri Daněk commented on ARTEMIS-1783:
-------------------------------------

The error was my doing, because I also had, which depended on guava, and what happened was
that for some reason I did not get guava in my uberjar.

I still think that artemis-core-client should have guava in its pom, because it is directly
using it. It should not be "accidentally" present there due to transitive dependencies. But
that is trivial code-style issue.

> Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError:
com/google/common/base/Supplier
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-1783
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-1783
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 2.5.0
>            Reporter: Jiri Daněk
>            Priority: Trivial
>
> When using my program cli-artemis-jms at https://github.com/rh-messaging/cli-java, which
depends on activemq-artemis-jms-client, I get the following stack trace
> {noformat}
> junit5(?) $ java -jar systemtests/client_executable/cli-artemis-jms.jar receiver --address
test --log-msgs json --count 0
> Exception in thread "main" java.lang.BootstrapMethodError: java.lang.NoClassDefFoundError:
com/google/common/base/Supplier
>         at org.apache.activemq.artemis.core.message.impl.CoreMessageObjectPools.<init>(CoreMessageObjectPools.java:26)
>         at org.apache.activemq.artemis.core.protocol.ClientPacketDecoder.<init>(ClientPacketDecoder.java:36)
>         at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManager.createPacketDecoder(ActiveMQClientProtocolManager.java:520)
>         at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQClientProtocolManager.connect(ActiveMQClientProtocolManager.java:412)
>         at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.establishNewConnection(ClientSessionFactoryImpl.java:1273)
>         at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnection(ClientSessionFactoryImpl.java:891)
>         at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.getConnectionWithRetry(ClientSessionFactoryImpl.java:795)
>         at org.apache.activemq.artemis.core.client.impl.ClientSessionFactoryImpl.connect(ClientSessionFactoryImpl.java:238)
>         at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:784)
>         at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnectionInternal(ActiveMQConnectionFactory.java:813)
>         at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:277)
>         at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.createConnection(ActiveMQConnectionFactory.java:272)
>         at com.redhat.mqe.acc.AccConnectionManager.<init>(AccConnectionManager.java:68)
>         at com.redhat.mqe.acc.AccConnectionManagerFactory.make(AccConnectionManagerFactory.java:33)
>         at com.redhat.mqe.acc.AccConnectionManagerFactory.make(AccConnectionManagerFactory.java:27)
>         at com.redhat.mqe.lib.CoreClient.createConnection(CoreClient.java:86)
>         at com.redhat.mqe.lib.ReceiverClient.consumeMessage(ReceiverClient.java:170)
>         at com.redhat.mqe.lib.ReceiverClient.startClient(ReceiverClient.java:147)
>         at com.redhat.mqe.lib.Main.main(Main.java:50)
>         at com.redhat.mqe.acc.Main.main(Main.java:74)
> Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Supplier
>         ... 20 more
> Caused by: java.lang.ClassNotFoundException: com.google.common.base.Supplier
>         at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
>         at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
>         at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
>         ... 20 more
> {noformat}
> I get this with artemis-jms-client 2.5.0, but not with artemis-jms-client 2.4.0.
> I believe the guilty commit is in ARTEMIS-1586, "794e56da99456e Refactor to make more
generic", which introduced usage of Google Guava, without adding it to the package's pom file,
causing my maven to miss that transitive dependency when building uberjar.
> The command above runs when triggered from Intellij IDE, where the dependency is on classpath,
for some reason.
> Workaround is easy, add Guava to dependencies of your own program which is using the
artemis jms library.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message