Thanks a lot, Richard,

I was able to reproduce the behaviour with mininmal effort.

def deltaSpikeVersion = '1.9.6'

dependencies {
    testImplementation 'org.apache.tomee:tomee-embedded:9.1.0'

    testImplementation 'org.apache.deltaspike.cdictrl:deltaspike-cdictrl-api:' 
+ deltaSpikeVersion
    testImplementation 'org.apache.deltaspike.cdictrl:deltaspike-cdictrl-owb:' 
+ deltaSpikeVersion + ':jakarta'
    testImplementation 'org.apache.deltaspike.core:deltaspike-core-api:' + 
deltaSpikeVersion
    testImplementation 'org.apache.deltaspike.core:deltaspike-core-impl:' + 
deltaSpikeVersion
    testImplementation 
'org.apache.deltaspike.modules:deltaspike-servlet-module-api:' + 
deltaSpikeVersion + ':jakarta'
    testImplementation 
'org.apache.deltaspike.modules:deltaspike-servlet-module-impl:' + 
deltaSpikeVersion + ':jakarta'
    testImplementation 'org.apache.deltaspike.test:test-utils:' + 
deltaSpikeVersion

    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

package com.example;

import jakarta.ejb.embeddable.EJBContainer;
import org.junit.jupiter.api.Test;

class EJBContainerTest {

    @Test
    void testMe() {
        System.setProperty("openejb.deployments.classpath.include", 
".*deltaspike.*");

        EJBContainer.createEJBContainer();
    }
}

The following providers:
org.apache.tomee.embedded.EmbeddedTomEEContainer$EmbeddedTomEEContainerProvider
Returned null from createEJBContainer call.

jakarta.ejb.EJBException: No EJBContainer provider available
Provider named org.apache.openejb.OpenEjbContainer$Provider threw unexpected 
exception at create EJBContainer: 
java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError: jakarta/management/Notification
        at java.base/java.lang.Class.getDeclaredMethods0(Native Method)

I will open a bug by DeltaSpike when I got Jira access.

Thanks for reducing the cause,
Markus

> Gesendet: Mittwoch, 12. Juli 2023 um 20:17 Uhr
> Von: "Richard Zowalla" <[email protected]>
> An: [email protected]
> Betreff: Re: Upgrading from TomeEE 8 to TomEE 9 -> 
> java.lang.NoClassDefFoundError: jakarta/management/Notification
>
> Hi,
> 
> I think, that it is a shading error on deltaspike side.
> Notification should still be in javax namespace: [1]
> 
> I refined the relocation patterns (see [2]) via a PR after 1.9.6 but
> there is no 1.9.7 or 2.0.0 yet. Best to ask on the deltaspike list, I
> guess.
> 
> Gruß
> Richard
> 
> 
> [1]
> https://docs.oracle.com/en/java/javase/17/docs/api/java.management/javax/management/Notification.html
> 
> [2] https://issues.apache.org/jira/browse/DELTASPIKE-1434
> 
> Am Mittwoch, dem 12.07.2023 um 17:14 +0200 schrieb [email protected]:
> > Hi guys,
> > 
> > I'm updating our project from TomEE 8 to TomEE 9.
> > 
> > It compiles but our test framework is unhappy during runtime.
> > 
> > There is some magic which I don't understand in detail.
> > 
> > First we tell the EJBContainer to use deltaspike:
> > 
> >    System.setProperty("openejb.deployments.classpath.include",
> > ".*deltaspike.*");
> > 
> > The the EJBContainer will be created.
> > 
> >    ejbContainer =
> > jakarta.ejb.embeddable.EJBContainer.createEJBContainer();
> > 
> > When checking the module deltaspike-core-impl-1.9.6 which is in the
> > classpath an excpetion will be thrown.
> > 
> > jakarta.ejb.EJBException: No EJBContainer provider available
> > Provider named org.apache.openejb.OpenEjbContainer$Provider threw
> > unexpected exception at create EJBContainer:
> > java.lang.NoClassDefFoundError
> > java.lang.NoClassDefFoundError: jakarta/management/Notification
> >         at java.base/java.lang.Class.getDeclaredMethods0(Native
> > Method)
> >         at
> > java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
> >         at
> > java.base/java.lang.Class.getDeclaredMethods(Class.java:2504)
> >         at
> > org.apache.xbean.finder.AnnotationFinder.readClassDef(AnnotationFinde
> > r.java:1203)
> >         at
> > org.apache.xbean.finder.AnnotationFinder.linkInterfaces(AnnotationFin
> > der.java:440)
> >         at
> > org.apache.xbean.finder.AnnotationFinder.enableFindImplementations(An
> > notationFinder.java:254)
> > [...]
> > 
> > Caused by: java.lang.ClassNotFoundException:
> > jakarta.management.Notification
> >         at
> > org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.jav
> > a:186)
> >         at
> > org.apache.openejb.core.TempClassLoader.loadClass(TempClassLoader.jav
> > a:83)
> >         ... 93 more
> > 
> > 
> > The following providers:
> > org.apache.tomee.embedded.EmbeddedTomEEContainer$EmbeddedTomEEContain
> > erProvider
> > Returned null from createEJBContainer call.
> > 
> > My understanding is this class jakarta.management.Notification is not
> > existing. It should be still javax.management.Notification.
> > 
> > def deltaSpikeVersion = '1.9.6'
> > 
> >     testImplementation 'org.apache.tomee:tomee-embedded:9.1.0'
> > 
> >     testImplementation 'org.apache.deltaspike.cdictrl:deltaspike-
> > cdictrl-api:' + deltaSpikeVersion
> > //    testImplementation 'org.apache.deltaspike.cdictrl:deltaspike-
> > cdictrl-owb:' + deltaSpikeVersion
> >     testImplementation 'org.apache.deltaspike.cdictrl:deltaspike-
> > cdictrl-owb:' + deltaSpikeVersion + ':jakarta'
> >     testImplementation 'org.apache.deltaspike.core:deltaspike-core-
> > api:' + deltaSpikeVersion
> >     testImplementation 'org.apache.deltaspike.core:deltaspike-core-
> > impl:' + deltaSpikeVersion
> > //    testImplementation 'org.apache.deltaspike.modules:deltaspike-
> > servlet-module-api:' + deltaSpikeVersion
> >     testImplementation 'org.apache.deltaspike.modules:deltaspike-
> > servlet-module-api:' + deltaSpikeVersion + ':jakarta'
> > //    testImplementation 'org.apache.deltaspike.modules:deltaspike-
> > servlet-module-impl:' + deltaSpikeVersion
> >     testImplementation 'org.apache.deltaspike.modules:deltaspike-
> > servlet-module-impl:' + deltaSpikeVersion + ':jakarta'
> >     testImplementation 'org.apache.deltaspike.test:test-utils:' +
> > deltaSpikeVersion
> > 
> > Does anybody have an idea what I can do?
> > 
> > Thanks,
> > Markus
> > 
> > 
> 
>

Reply via email to