Open FroMage opened 9 years ago
I guess I'll need some help from @dmlloyd
Even an upgrade to the latest 1.4.4.Final
does not fix this.
@FroMage imo, you get that same class XAResource from a module and also from JDK. /Cc @dmlloyd
From what I can see in the debugger, the first time it's loaded by the ModuleClassLoader for javax.transaction.api:1.2
, which sounds right. The second time it's loaded as a by-product of defining a class (com.arjuna.ats.jta.resources.LastResourceCommitOptimisation
) from org.jboss.jboss-transaction-spi
where it fails, but no clue why, my debugger just jumps around randomly.
@alesj that class is not in the JDK, although its package is.
AHA, we're getting somewhere. I told the CeylonModuleLoader
(@alesj's creation) that the JDK did not have a javax.transaction
module with a javax.transaction.xa
package (nobody depended on it explicitly), and it fails to link h2 (another module), which does not have a module descriptor and depended on it implicitly (like everyone depends on the JDK). So I assume that for some reason it used to get that dependency (on the jar) via the JDK auto-import (which is surely wrong).
ARG DAMNIT you're right the JDK does have some stuff in javax.transaction.xa
. And yes that includes XAResource
:
491 2015-01-27 00:43 javax/transaction/InvalidTransactionException.class
494 2015-01-27 00:43 javax/transaction/TransactionRequiredException.class
500 2015-01-27 00:43 javax/transaction/TransactionRolledbackException.class
1449 2015-01-27 00:42 javax/transaction/xa/XAException.class
1062 2015-01-27 00:42 javax/transaction/xa/XAResource.class
292 2015-01-27 00:42 javax/transaction/xa/Xid.class
But my jars need more than this. So how do I resolve this shit?
The javax.transaction.api
module contains:
541 2013-10-08 15:44 javax/transaction/Status.class
483 2013-10-08 15:44 javax/transaction/HeuristicRollbackException.class
491 2013-10-08 15:44 javax/transaction/InvalidTransactionException.class
499 2013-10-08 15:44 javax/transaction/TransactionScoped.class
863 2013-10-08 15:44 javax/transaction/Transactional.class
292 2013-10-08 15:44 javax/transaction/xa/Xid.class
1468 2013-10-08 15:44 javax/transaction/xa/XAException.class
1062 2013-10-08 15:44 javax/transaction/xa/XAResource.class
195 2013-10-08 15:44 javax/transaction/Synchronization.class
661 2013-10-08 15:44 javax/transaction/UserTransaction.class
474 2013-10-08 15:44 javax/transaction/HeuristicMixedException.class
631 2013-10-08 15:44 javax/transaction/TransactionSynchronizationRegistry.class
477 2013-10-08 15:44 javax/transaction/HeuristicCommitException.class
771 2013-10-08 15:44 javax/transaction/Transaction.class
456 2013-10-08 15:44 javax/transaction/RollbackException.class
494 2013-10-08 15:44 javax/transaction/TransactionRequiredException.class
500 2013-10-08 15:44 javax/transaction/TransactionRolledbackException.class
885 2013-10-08 15:44 javax/transaction/TransactionManager.class
1366 2013-10-08 15:44 javax/transaction/Transactional$TxType.class
585 2013-10-08 15:44 javax/transaction/SystemException.class
463 2013-10-08 15:44 javax/transaction/TransactionalException.class
468 2013-10-08 15:44 javax/transaction/NotSupportedException.class
So it's a superset of the JDK's javax.transaction
I suppose.
Yup, that javax.transactions is some funky shit ...
So what am I supposed to do? Exclude some classes from javax.transaction.api
so that the JDK parts get picked up? Are they even the same classes?
Apparently excluding it is not enough since it excludes it from export, but it's still in the module itself.
Nope, I can't win this way. Even if I did manage that, I'd have to make the ceylon module depend on the javax.transaction
module from the JDK, but it can't because the compiler does not support split packages. OK at this point it's just too damn complicated to fix, I'll move this to 1.3.
In
ceylon.transaction
:And its test:
The definition of
org.jboss.narayana.jta
:And
javax.transaction.api
:The error I get are: