项目设置为JavaFX Scenic View

时间:2017-11-07 17:45:06

标签: java css eclipse 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:\Users\Ed\workspace\ModelFX\bin\application\scenicview.jar
Loading agent for:sun.tools.attach.AttachProviderImpl@3a5a5f11: 12132 ID:12132 on port:7566 took:107ms using agent defined in C:\Users\Ed\workspace\ModelFX\bin\application\scenicview.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参数,程序会按预期运行。只有在我尝试加载Scenic View时才会出现错误。

1 个答案:

答案 0 :(得分:1)

一秒钟前我遇到了同样的问题。 回到Scenic View v8.7.0。将其添加为库。 在代码中添加ScenicView.show(scene);,它应该会启动。 请注意,您需要安装当前项目JRE和JDK8。