在启动过程中,我的应用程序出现以下错误:
在模块系统完全初始化之前不支持代理
我猜堆栈跟踪没有太大帮助吗?
[SUB] java.lang.InternalError: Proxy is not supported until module system is fully initialized
[SUB] at java.lang.Throwable.fillInStackTrace(Unknown Source)
[SUB] at java.lang.Throwable.<init>(Unknown Source)
[SUB] at java.lang.Error.<init>(Unknown Source)
[SUB] at java.lang.VirtualMachineError.<init>(Unknown Source)
[SUB] at java.lang.InternalError.<init>(Unknown Source)
[SUB] at java.lang.reflect.Proxy$ProxyBuilder.<init>(Unknown Source)
[SUB] at java.lang.reflect.Proxy$ProxyBuilder.<init>(Unknown Source)
[SUB] at java.lang.reflect.Proxy.lambda$getProxyConstructor$0(Unknown Source)
[SUB] at java.lang.reflect.Proxy$$Lambda$1.apply(Unknown Source)
[SUB] at jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(Unknown Source)
[SUB] at jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(Unknown Source)
[SUB] at java.lang.reflect.Proxy.getProxyConstructor(Unknown Source)
[SUB] at java.lang.reflect.Proxy.newProxyInstance(Unknown Source)
[SUB] at javax.rad.util.EventHandler$ListenerHandler.<init>(Unknown Source)
[SUB] at javax.rad.util.EventHandler.setDefaultListener(Unknown Source)
[SUB] at javax.rad.genui.container.AbstractFrame.<init>(Unknown Source)
[SUB] at javax.rad.application.genui.UILauncher.<init>(Unknown Source)
[SUB] at com.sibvisions.rad.ui.javafx.impl.JavaFXLauncher.createUILauncher(Unknown Source)
[SUB] at com.sibvisions.mobilefx.DesktopJavaFXLauncher.createUILauncher(Unknown Source)
[SUB] at com.sibvisions.rad.ui.javafx.impl.JavaFXLauncher.<init>(Unknown Source)
[SUB] at com.sibvisions.mobilefx.DesktopJavaFXLauncher.<init>(Unknown Source)
[SUB] at com.sibvisions.mobilefx.MobileJavaFXLauncher.<init>(Unknown Source)
[SUB] at com.sibvisions.mobilefx.MobileJavaFXApplication.createLauncher(Unknown Source)
[SUB] at com.sibvisions.rad.ui.javafx.impl.JavaFXApplication.start(Unknown Source)
[SUB] at com.sibvisions.mobilefx.MobileJavaFXApplication.start(Unknown Source)
[SUB] at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
[SUB] at com.sun.javafx.application.LauncherImpl$$Lambda$9.run(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl$$Lambda$10.run(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl$$Lambda$22.run(Unknown Source)
[SUB] at java.security.AccessController.doPrivileged(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
[SUB] at com.sun.javafx.application.PlatformImpl$$Lambda$9.run(Unknown Source)
我们所做的并不棘手。我们只需为接口创建代理类。在启动“应用程序”之前,我们应该等待“初始化”或类似操作吗?
嗯...为什么模块系统是统一的?
这是一个基于Eclipse项目模板的简单示例应用程序:
public class Application extends MobileApplication
{
@Override
public void init()
{
try
{
//Runnable is only an example, the problem occurs with any interface
Proxy.newProxyInstance(getClass().getClassLoader(), new Class<?>[] {Runnable.class}, new InvocationHandler()
{
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
return null;
}
});
}
catch (Throwable th)
{
th.printStackTrace();
}
addViewFactory(HOME_VIEW, BasicView::new);
}
@Override
public void postInit(Scene scene)
{
Swatch.BLUE.assignTo(scene);
((Stage) scene.getWindow()).getIcons().add(new Image(Application.class.getResourceAsStream("/icon.png")));
}
}