JavaMoney / jsr354-ri

JSR 354 - Moneta: Reference Implementation
Other
344 stars 101 forks source link

moneta-core depends on JEE8, making it unusable with JEE9 #379

Closed eikemeier closed 1 year ago

eikemeier commented 2 years ago

https://github.com/JavaMoney/jsr354-ri/blob/ac0afde6f37ecc8a9a30c3386b2350dbe7d37459/moneta-core/src/main/java/org/javamoney/moneta/spi/PriorityAwareServiceProvider.java#L18

depends on

https://github.com/JavaMoney/jsr354-ri/blob/ac0afde6f37ecc8a9a30c3386b2350dbe7d37459/pom.xml#L327

crashing at runtime:

java.lang.NoClassDefFoundError: javax/annotation/Priority
    at org.javamoney.moneta.spi.PriorityAwareServiceProvider.compareServices(PriorityAwareServiceProvider.java:72)
    at java.base/java.util.TimSort.countRunAndMakeAscending(TimSort.java:355)
    at java.base/java.util.TimSort.sort(TimSort.java:220)
    at java.base/java.util.Arrays.sort(Arrays.java:1307)
    at java.base/java.util.ArrayList.sort(ArrayList.java:1721)
    at org.javamoney.moneta.spi.PriorityAwareServiceProvider.loadServices(PriorityAwareServiceProvider.java:102)
    at org.javamoney.moneta.spi.PriorityAwareServiceProvider.getServices(PriorityAwareServiceProvider.java:66)
    at javax.money.spi.Bootstrap.getServices(Bootstrap.java:110)
    at org.javamoney.moneta.spi.DefaultMonetaryCurrenciesSingletonSpi.getDefaultProviderChain(DefaultMonetaryCurrenciesSingletonSpi.java:134)
    at org.javamoney.moneta.spi.DefaultMonetaryCurrenciesSingletonSpi.collectProviders(DefaultMonetaryCurrenciesSingletonSpi.java:91)
    at org.javamoney.moneta.spi.DefaultMonetaryCurrenciesSingletonSpi.getCurrencies(DefaultMonetaryCurrenciesSingletonSpi.java:45)
    at javax.money.spi.MonetaryCurrenciesSingletonSpi.getCurrency(MonetaryCurrenciesSingletonSpi.java:76)
    at javax.money.Monetary.getCurrency(Monetary.java:382)
keilw commented 2 years ago

I guess we'll maintain a 1.4.x release using the old javax annotations and add a 1.5.x release of Moneta with the new Jakarta annotations and similar dependencies.

msgilligan commented 2 years ago

The newer dependencies have better module support, so they will also be useful in apps built using jlink, etc.

dadadom commented 2 years ago

I guess we'll maintain a 1.4.x release using the old javax annotations and add a 1.5.x release of Moneta with the new Jakarta annotations and similar dependencies.

Is there any plan on when this split, or any release of 1.4.x, might happen? I saw in https://github.com/JavaMoney/javamoney-parent/issues/6 that there were some issues related to Bintray, are those blocking new releases?

DRoppelt commented 1 year ago

Is there any way to help further with this? I submitted a PR, but I assume this is more about the 1.4.X split than simply replacing import javax. with import jakarta.

keilw commented 1 year ago

We'll check the PR thanks a lot. It needs to be reviewed by a JCP member, either myself, another Maintenance lead like @otaviojava or @msgilligan could also help if he has time.

DRoppelt commented 1 year ago

Ok. I also thought about this change again. While it gives JEE9 compatibility, it also breaks JEE8 (probably? I did not test). Which might warrant a major change (2.X) over a feature change (1.5.X)

msgilligan commented 1 year ago

I'm pretty busy at the moment, but when I return to my project that uses Java Money this is something I would really like to see, so I will bookmark this for later.

ramvem commented 1 year ago

Greetings! The fix has not been pushed to mvnrepository as 1.4.3. Any plans? I don't know if that is the right thing to do. We should probably change to 2.0. This blocks javaEE->jakartaEE, hibernate 5->6, etc. for moneta users. Thank you! Ram Vemuri

keilw commented 1 year ago

Until the blocker #353 is not solved appropriately, I'm afraid there won't be a 1.4.3 release. @msgilligan is not the only one who is busy, and I was the only one who could spend a bit of time, especially fixing #374 for EMF, but #353 is more complex because with the current approach of using the old URLConnection.