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

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

     [ https://issues.apache.org/jira/browse/ARTEMIS-3546?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Bertram updated ARTEMIS-3546:
------------------------------------
    Description: 
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.



  was:
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.




> 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
>            Priority: Major
>
> 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)