我想检查我的 JavaFX 应用程序的场景图。我已经下载了ScenicView.jar并放在我的项目文件夹中,旁边是.fxml和.java文件(我正在使用Eclipse)。
在 VM 参数中,我有 -javaagent:C:\path\to\bin\application\scenicview.jar
每当我运行 Main 类时,我都会收到此错误:
Platform running
Launching ScenicView v9.0.0
java.lang.IllegalStateException: Location is not set.
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2459)
at javafx.fxml/javafx.fxml.FXMLLoader.load(FXMLLoader.java:2435)
at org.scenicview.view.tabs.CSSFXTab.createTabContent(CSSFXTab.java:62)
at org.scenicview.view.tabs.CSSFXTab.<init>(CSSFXTab.java:54)
at org.scenicview.view.ScenicViewGui.buildUI(ScenicViewGui.java:300)
at org.scenicview.view.ScenicViewGui.<init>(ScenicViewGui.java:214)
at org.scenicview.ScenicView.start(ScenicView.java:182)
at org.scenicview.ScenicView.lambda$premain$0(ScenicView.java:124)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
at java.base/java.lang.Thread.run(Thread.java:844)
Startup done
Creating server
Server done
Number of running Java applications found: 4
Obtaining properties for Java application with PID:8208
Obtaining properties for Java application with PID:12132
Error while obtaining properties for JVM:sun.tools.attach.AttachProviderImpl@3a5a5f11: 2572 application.GUI
java.io.IOException: Can not attach to current VM
at jdk.attach/sun.tools.attach.HotSpotVirtualMachine.<init>(HotSpotVirtualMachine.java:75)
at jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:48)
at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:69)
at jdk.attach/com.sun.tools.attach.spi.AttachProvider.attachVirtualMachine(AttachProvider.java:193)
at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:249)
at org.fxconnector.remote.RemoteConnectorImpl.getRunningJavaFXApplications(RemoteConnectorImpl.java:368)
at org.fxconnector.remote.RemoteConnectorImpl.connect(RemoteConnectorImpl.java:251)
at org.scenicview.model.update.RemoteVMsUpdateStrategy.getActiveApps(RemoteVMsUpdateStrategy.java:57)
at org.scenicview.model.update.RemoteVMsUpdateStrategy.work(RemoteVMsUpdateStrategy.java:77)
at org.fxconnector.helper.WorkerThread.run(WorkerThread.java:43)
Obtaining properties for Java application with PID:8636
1 JavaFX applications found
Loading agent from: C:UsersEdworkspaceModelFXbinapplicationscenicview.jar
Loading agent for:sun.tools.attach.AttachProviderImpl@3a5a5f11: 12132 ID:12132 on port:7566 took:107ms using agent defined in C:UsersEdworkspaceModelFXbinapplicationscenicview.jar
Remote agent started on port:7566
RemoteApp connected on:7558 stageID:StageID [appID=12132, stageID=1986442457, name=null]
Exception in thread "JavaFX Application Thread" java.lang.NullPointerException
at org.scenicview.view.tabs.CSSFXTab.setActiveStage(CSSFXTab.java:112)
at org.scenicview.view.ScenicViewGui.setActiveStage(ScenicViewGui.java:736)
at org.scenicview.model.update.AppsRepository.lambda$appAdded$3(AppsRepository.java:97)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(PlatformImpl.java:418)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:417)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:175)
at java.base/java.lang.Thread.run(Thread.java:844)
我猜它无法读取我的代码中加载的 FXML 文件?在各种控制器类中,我有这样的东西:
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("file.fxml"));
loader.setController(this);
Parent root = loader.load();
我真的不明白这个,它没有透露太多!
编辑:我应该提到,没有VM参数,程序按预期运行。该错误仅在我尝试加载风景时出现。
就在一秒钟前,我遇到了同样的问题。回退到景区 v8.7.0。将其添加为库。在代码中添加ScenicView.show(scene);
,它应该会启动。请注意,您需要安装当前的项目 JRE 和 JDK8。