[
https://issues.apache.org/jira/browse/ARTEMIS-3546?focusedWorklogId=683644&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-683644
]
ASF GitHub Bot logged work on ARTEMIS-3546:
-------------------------------------------
Author: ASF GitHub Bot
Created on: 18/Nov/21 21:38
Start Date: 18/Nov/21 21:38
Worklog Time Spent: 10m
Work Description: gemmellr commented on pull request #3846:
URL: https://github.com/apache/activemq-artemis/pull/3846#issuecomment-973292765
> The only thing I did not do was the optional aspect of the library.
>
> Maven will internally still use the unshaded jar for certain features, and
when that happens the dependency still valid, but when using outside of the
context of artemis build the shaded version will not have the dependency. I
checked that and it's working...
>
> (I needed the dependency for certain tests)
>
You dropped the plugin version removal change in the commons pom too, that
should be fixed
I would suggest to try and leave them optional, and e.g. add the deps back
as test scope deps if still needed in places to run tests using the wrapper,
due to maven running them against the original classes rather than the shaded
ones in the packaged jar.
As you showed in your original efforts, leaving it this way would mean other
modules can still compile with the very changes present that this is aiming to
prevent, something that likely wouldnt be picked up until after it was
released. At least with them optional they cant compile. If adding them as test
deps where needed works then at least they arent hard compile time deps except
for the tests which is much less of an issue, and you can be sure no hard
usages are added in other modules unless they themselves already depend on the
bits.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
Issue Time Tracking
-------------------
Worklog Id: (was: 683644)
Time Spent: 5h (was: 4h 50m)
> 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
> Assignee: Clebert Suconic
> Priority: Major
> Fix For: 2.20.0
>
> Time Spent: 5h
> Remaining Estimate: 0h
>
> 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.20.1#820001)