我有一个JavaFX应用程序,我想在JVisualVM分析器下运行。但是,在分析器下运行时,我无法从菜单栏访问菜单项。
到目前为止,我的应用程序只是一个使用SceneBuilder构建的简单场景。它有一个AnchorPane和一个默认的菜单栏。
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane minHeight="-Infinity" minWidth="-Infinity" prefHeight="200.0" prefWidth="200.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<MenuBar layoutX="-41.0" layoutY="-12.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
</menus>
</MenuBar>
</children>
</AnchorPane>
代码也很简单,没什么特别的:
@Override
public void start(Stage primaryStage) throws IOException
{
String path = "Window.fxml";
URL url = getClass().getClassLoader().getResource(path);
FXMLLoader loader = new FXMLLoader();
loader.setLocation(url);
Parent root = loader.load();
Scene scene = new Scene(root, 600, 400);
primaryStage.setScene(scene);
primaryStage.show();
}
我执行以下操作:
在Eclipse中,我看到控制台窗口中出现以下错误消息:
Exception in thread "JavaFX Application Thread" java.lang.NoClassDefFoundError: com/sun/javafx/tk/Toolkit$$Lambda$166
at com.sun.javafx.tk.Toolkit$$Lambda$166/563347763.get$Lambda(Unknown Source)
at com.sun.javafx.tk.Toolkit.runPulse(Unknown Source)
at com.sun.javafx.tk.Toolkit.firePulse(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit.lambda$runToolkit$363(Unknown Source)
at com.sun.javafx.tk.quantum.QuantumToolkit$$Lambda$41/353428524.run(Unknown Source)
at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
at com.sun.glass.ui.win.WinApplication$$Lambda$37/1109371569.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
如何分析从我的JavaFX应用程序菜单中调用的方法?
我还尝试将应用程序打包到可执行的JAR文件中,这样就不会涉及Eclipse。
答案 0 :(得分:0)
如果探查器使用BCI /检测,则此问题可能相关:Transforming lambdas in Java 8
如果探查器有任何选项可以停止跟踪lambdas的性能,请尝试使用它。
了解您的问题是否仍然存在于较新版本的Java中会很有趣。