ScalaFX&;CSS文件(使用Java8)

ScalaFX&;CSS文件(使用Java8),java,scala,javafx,sbt,scalafx,Java,Scala,Javafx,Sbt,Scalafx,我将ScalaFX与Java8一起使用,在将ScalaFX作为CSS文件发送给我们时遇到了困难 到目前为止,我读到的所有东西都是这样说的: object testObj extends JFXApp { stage = new JFXApp.PrimaryStage { scene = new Scene { stylesheets += this.getClass.getResource("/css/app.css").toExternalForm var

我将ScalaFX与Java8一起使用,在将ScalaFX作为CSS文件发送给我们时遇到了困难

到目前为止,我读到的所有东西都是这样说的:

object testObj extends JFXApp {
  stage = new JFXApp.PrimaryStage {
    scene = new Scene {
      stylesheets += this.getClass.getResource("/css/app.css").toExternalForm
      var nbutton = new Button("Submit")
      content_=(List(nbutton))
    }
  }
}
如果我不想添加样式表,应用程序就会立即启动。但是,如果我确实尝试添加css文件,我的控制台会告诉我:

[info] Running TestTool 
Exception in Application start method
Workaround until RT-13281 is implemented: keep toolkit alive
[error] (run-main-0) java.lang.RuntimeException: Exception in Application start method
java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:917)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at TestTool$$anon$3$$anon$4.<init>(Main.scala:20)
    at TestTool$$anon$3.<init>(Main.scala:19)
    at TestTool$.delayedEndpoint$TestTool$1(Main.scala:14)
    at TestTool$delayedInit$body.apply(Main.scala:13)
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
    at scalafx.application.JFXApp$class.scalafx$application$JFXApp$class$$$anonfun$2(JFXApp.scala:250)
    at scalafx.application.JFXApp$class.scalafx$application$JFXApp$class$$$anonfun$2$adapted(JFXApp.scala:250)
    at scala.collection.immutable.List.foreach(List.scala:381)
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
    at scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
    at scalafx.application.JFXApp$class.init(JFXApp.scala:250)
    at TestTool$.init(Main.scala:13)
    at scalafx.application.AppHelper.start(AppHelper.scala:32)
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$162(LauncherImpl.java:863)
    at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
    at com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
    at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
    at java.lang.Thread.run(Thread.java:745)
[trace] Stack trace suppressed: run last compile:run for the full output.
[info]运行测试工具
应用程序启动方法中的异常
RT-13281实施前的解决方法:保持工具箱处于活动状态
[错误](run-main-0)java.lang.RuntimeException:应用程序启动方法中的异常
java.lang.RuntimeException:应用程序启动方法中的异常
位于com.sun.javafx.application.LaunchImpl.launchApplication1(LaunchImpl.java:917)
在com.sun.javafx.application.launchempl.lambda$launchApplication$155(launchempl.java:182)
运行(Thread.java:745)
原因:java.lang.NullPointerException
在TestTool$$anon$3$$anon$4。(Main.scala:20)
在TestTool$$anon$3处(Main.scala:19)
在TestTool$.delayedEndpoint$TestTool$1处(Main.scala:14)
在TestTool$delayedInit$body.apply上(Main.scala:13)
在scala.Function0$class.apply$mcV$sp处(Function0.scala:34)
在scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)中
位于scalafx.application.JFXApp$class.scalafx$application$JFXApp$class$$$anonfun$2(JFXApp.scala:250)
位于scalafx.application.JFXApp$class.scalafx$application$JFXApp$class$$$anonfun$2$adapted(JFXApp.scala:250)
位于scala.collection.immutable.List.foreach(List.scala:381)
位于scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
位于scala.collection.mutable.ListBuffer.foreach(ListBuffer.scala:45)
位于scalafx.application.JFXApp$class.init(JFXApp.scala:250)
位于TestTool$.init(Main.scala:13)
位于scalafx.application.AppHelper.start(AppHelper.scala:32)
在com.sun.javafx.application.launchempl.lambda$launchApplication1$162(launchempl.java:863)
位于com.sun.javafx.application.PlatformImpl.lambda$runAndWait$175(PlatformImpl.java:326)
位于com.sun.javafx.application.PlatformImpl.lambda$null$173(PlatformImpl.java:295)
位于java.security.AccessController.doPrivileged(本机方法)
位于com.sun.javafx.application.PlatformImpl.lambda$runLater$174(PlatformImpl.java:294)
位于com.sun.glass.ui.invokelateDispatcher$Future.run(invokelateDispatcher.java:95)
在com.sun.glass.ui.gtk.GtkApplication.\u runLoop(本机方法)
在com.sun.glass.ui.gtk.GtkApplication.lambda$null$49(GtkApplication.java:139)
运行(Thread.java:745)
[trace]堆栈跟踪被抑制:运行上次编译:运行完整输出。
当然,应用程序并没有启动

到目前为止,我读到的所有内容都表明这似乎是Java8的一个问题。我不知道该从哪里着手

任何帮助都将不胜感激


谢谢,

似乎找不到您的css文件。在执行抛出null的toExternalForm之前,请检查是否可以找到它。我不是scala程序员(尽管我认为我可以阅读此代码):很可能css文件的路径是错误的。它将在一个名为css的包中查找app.css,相对于运行时的类路径。所以你需要确保1。你有那种结构,2。css文件将与生成的类文件一起部署,并且(如果您将绑定为jar文件)3。css包含在jar中。@Purring鸽子我添加了一个自检查(this.getClass.getResource(“app.css”)!=null)println(“Found”)else(“Not Found”),并且我收到了“Found”,确认它正在查找它。您正在查找“app.css”,但上面的代码是:this.getClass.getResource(“/css/app.css”)。我不是scala程序员,但在Java中,我发现使用“/”开头有问题。很抱歉,我一直在键入和更改各种内容。这个文件在css/app.css中,我非常绝望,我把它放在了每个文件夹中,只是因为..为什么不呢。我仍然收到错误。它似乎找不到您的css文件。在执行抛出null的toExternalForm之前,请检查是否可以找到它。我不是scala程序员(尽管我认为我可以阅读此代码):很可能css文件的路径是错误的。它将在一个名为css的包中查找app.css,相对于运行时的类路径。所以你需要确保1。你有那种结构,2。css文件将与生成的类文件一起部署,并且(如果您将绑定为jar文件)3。css包含在jar中。@Purring鸽子我添加了一个自检查(this.getClass.getResource(“app.css”)!=null)println(“Found”)else(“Not Found”),并且我收到了“Found”,确认它正在查找它。您正在查找“app.css”,但上面的代码是:this.getClass.getResource(“/css/app.css”)。我不是scala程序员,但在Java中,我发现使用“/”开头有问题。很抱歉,我一直在键入和更改各种内容。这个文件在css/app.css中,我非常绝望,我把它放在了每个文件夹中,只是因为..为什么不呢。我仍然收到错误。