Closed
Description
Java Version
PS C:\Users\kzou2\.p\mahu> java --version
openjdk 23 2024-09-17
OpenJDK Runtime Environment (build 23+37-2369)
OpenJDK 64-Bit Server VM (build 23+37-2369, mixed mode, sharing)
Avaje Inject Version
avaje-inject-11.4
Exception
java.lang.IllegalAccessException: member is private to package: cool.houge.mahu.admin.TestTransactionBase.database/io.ebean.Database/getField, from public Lookup
at java.base/java.lang.invoke.MemberName.makeAccessException(MemberName.java:889)
at java.base/java.lang.invoke.MethodHandles$Lookup.checkAccess(MethodHandles.java:3999)
at java.base/java.lang.invoke.MethodHandles$Lookup.checkField(MethodHandles.java:3945)
at java.base/java.lang.invoke.MethodHandles$Lookup.getFieldVarHandleCommon(MethodHandles.java:4198)
at java.base/java.lang.invoke.MethodHandles$Lookup.getFieldVarHandleNoSecurityManager(MethodHandles.java:4188)
at java.base/java.lang.invoke.MethodHandles$Lookup.unreflectVarHandle(MethodHandles.java:3694)
at io.avaje.inject.test.Lookups.getVarhandle(Lookups.java:36)
at io.avaje.inject.test.MetaReader.newTarget(MetaReader.java:157)
at io.avaje.inject.test.MetaReader.readField(MetaReader.java:133)
at io.avaje.inject.test.MetaReader.<init>(MetaReader.java:50)
at io.avaje.inject.test.MetaInfo.<init>(MetaInfo.java:16)
at io.avaje.inject.test.InjectJunitExtension.createMetaInfo(InjectJunitExtension.java:110)
at io.avaje.inject.test.InjectJunitExtension.beforeAll(InjectJunitExtension.java:29)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
TestTransactionBase.java
public abstract class TestTransactionBase extends TestBase {
@Inject
Database database;
protected boolean rollbackOnly = true;
private Transaction transaction;
@BeforeEach
void before() {
transaction = db().beginTransaction();
}
@AfterEach
void after() {
if (rollbackOnly) {
transaction.rollback();
} else {
transaction.commit();
}
}
/// 禁用事务自动回滚
protected void disableRollback() {
this.rollbackOnly = false;
}
protected Database db() {
return database;
}
}
TestBase
@InjectTest
public class TestBase {}