为JavaFX风景建立项目



我想检查我的 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。

最新更新