You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Andy Wilkinson (Jira)" <ji...@apache.org> on 2021/10/29 16:53:00 UTC

[jira] [Created] (ARTEMIS-3546) ClassNotFoundException: javax.json.JsonValue when creating an ActiveMQConnectionFactory using artemis-jakarta-client-all

Andy Wilkinson created ARTEMIS-3546:
---------------------------------------

             Summary: ClassNotFoundException: javax.json.JsonValue when creating an ActiveMQConnectionFactory using artemis-jakarta-client-all
                 Key: ARTEMIS-3546
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-3546
             Project: ActiveMQ Artemis
          Issue Type: Bug
          Components: JMS
    Affects Versions: 2.19.0
            Reporter: Andy Wilkinson


As expected, {{artemis-jakarta-client-all}} contains the various {{jakarta.json.\\*}} classes from Jakarta EE 9. However, its bytecode still references the {{javax.json.\\*}} classes from EE 8. This results in a failure at runtime when creating an {{ActiveMQConnectionFactory}}:

{noformat}
Exception in thread "main" java.lang.IllegalStateException: java.lang.NoClassDefFoundError: javax/json/JsonValue
	at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:225)
	at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:218)
	at example.Main.main(Main.java:8)
Caused by: java.lang.NoClassDefFoundError: javax/json/JsonValue
	at org.apache.activemq.artemis.uri.schema.connector.TCPTransportConfigurationSchema.getTransportConfigurations(TCPTransportConfigurationSchema.java:68)
	at org.apache.activemq.artemis.uri.schema.serverLocator.TCPServerLocatorSchema.internalNewObject(TCPServerLocatorSchema.java:42)
	at org.apache.activemq.artemis.uri.schema.serverLocator.TCPServerLocatorSchema.internalNewObject(TCPServerLocatorSchema.java:33)
	at org.apache.activemq.artemis.utils.uri.URISchema.newObject(URISchema.java:86)
	at org.apache.activemq.artemis.utils.uri.URISchema.newObject(URISchema.java:30)
	at org.apache.activemq.artemis.utils.uri.URIFactory.newObject(URIFactory.java:59)
	at org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.newLocator(ServerLocatorImpl.java:333)
	at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.setBrokerURL(ActiveMQConnectionFactory.java:243)
	at org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:223)
	... 2 more
Caused by: java.lang.ClassNotFoundException: javax.json.JsonValue
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
	... 11 more
{noformat}

With artemis-jakarta-client-all-2.19.0.jar on the classpath, the failure above was produced by the following main class:

{code:java}
package example;

import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;

public class Main {
	
    public static void main(String[] args) {
        new ActiveMQConnectionFactory();
    }

}
{code}

The shaded Johnzon code also has references to {{javax.json.*}} classes.

A similar problem exists with {{artemis-jakarta-client}} when upgrading its transitive dependencies to their Jakarta EE 9 versions.





--
This message was sent by Atlassian Jira
(v8.3.4#803005)