我正在关注 Spring Boot + Apache Wicket 教程:https://udemy.com/course/starting-with-apache-wicket-version-9x/learn/lecture/33750684#overview 并有以下代码。
当我将以下行添加到 HomePage.java 代码时开始出现以下错误
@SpringBean
private MongoDBService mongoDBService;
HomePage.java
import app.services.MongoDBService;
import app.web.pages.BasePage;
import com.giffing.wicket.spring.boot.context.scan.WicketHomePage;
import lombok.extern.slf4j.Slf4j;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.spring.injection.annot.SpringBean;
import org.wicketstuff.annotation.mount.MountPath;
@WicketHomePage
@MountPath(value = "home", alt = {"home2"})
@Slf4j
public class HomePage extends BasePage {
@SpringBean
private MongoDBService mongoDBService;
public HomePage() {
Label label = new Label("label", "My custom page title from Wicket! "+mongoDBService.getRepo().count());
add(label);
}
}
BasePage.java
public abstract class BasePage extends WebPage {
public BasePage(PageParameters params){
super(params);
Injector.get().inject(this);
initPage();
}
public BasePage(){
Injector.get().inject(this);
initPage();
}
private void initPage(){
}
@Override
public void renderHead(IHeaderResponse response) {
super.renderHead(response);
response.render(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getJQueryReference()));
response.render(JavaScriptHeaderItem.forReference(getApplication().getJavaScriptLibrarySettings().getWicketAjaxReference()));
response.render(JavaScriptHeaderItem.forUrl("https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"));
response.render(CssHeaderItem.forUrl("https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"));
}
}
MongoDBService.java
@Service
@Slf4j
public class MongoDBService {
@Autowired
@Getter
private TodoMongoDBRepository repo;
@PostConstruct
void setup() {
log.info("+++ MongoDB database is starting ...");
repo.deleteAll();
for (int i = 1; i <= 8; i++) {
Todo todo = new Todo();
todo.setTitle("Todo number " + i);
todo.setBody("Body number " + i);
addToItems(todo);
}
}
public List<Todo> getAllItems() {
return StreamSupport.stream(repo.findAll().spliterator(), false)
.collect(Collectors.toList());
}
public void addToItems(Todo todo) {
repo.save(todo);
}
public void removeItems(List<Todo> items) {
repo.deleteAll(items);
}
}
HomePage.java
@WicketHomePage
@MountPath(value = "home", alt = {"home2"})
@Slf4j
public class HomePage extends BasePage {
@SpringBean
private MongoDBService mongoDBService;
public HomePage() {
Label label = new Label("label", "My custom page title from Wicket! "+mongoDBService.getRepo().count());
add(label);
}
}
错误:
Caused by: net.sf.cglib.core.CodeGenerationException: java.lang.reflect.InaccessibleObjectException-->Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @58c1670b
at net.sf.cglib.core.ReflectUtils.defineClass(ReflectUtils.java:464) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:339) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:96) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData$3.apply(AbstractClassGenerator.java:94) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.internal.LoadingCache$2.call(LoadingCache.java:54) ~[cglib-3.3.0.jar:na]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at net.sf.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:61) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:119) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:294) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:221) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:174) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:153) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.proxy.Enhancer.<clinit>(Enhancer.java:73) ~[cglib-3.3.0.jar:na]
... 72 common frames omitted
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module @58c1670b
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[na:na]
at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[na:na]
at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199) ~[na:na]
at java.base/java.lang.reflect.Method.setAccessible(Method.java:193) ~[na:na]
at net.sf.cglib.core.ReflectUtils$1.run(ReflectUtils.java:61) ~[cglib-3.3.0.jar:na]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:569) ~[na:na]
at net.sf.cglib.core.ReflectUtils.<clinit>(ReflectUtils.java:52) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:243) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25) ~[cglib-3.3.0.jar:na]
at net.sf.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:332) ~[cglib-3.3.0.jar:na]
... 84 common frames omitted