Sbt ScalaFX项目中CSS样式表的正确存放位置咨询
在SBT目录结构中ScalaFX查找CSS样式表的正确方式
ScalaFX依赖JavaFX的资源加载机制,只会从**类路径(classpath)**中查找CSS样式表,SBT的标准资源目录是src/main/resources,这是你应该放置样式表的核心位置。
一、正确的文件存放位置
- 直接将
style.css放在src/main/resources根目录下 - 若需按模块组织,可放在
src/main/resources的子目录中,比如src/main/resources/styles
二、正确的加载代码
加载时必须使用类路径资源的URL格式,不能用本地文件系统路径(打包成JAR后本地路径会失效),示例如下:
- 样式表在
src/main/resources根目录:
scene.getStylesheets.add(getClass.getResource("/style.css").toExternalForm())
注意路径前的/,代表从类路径根目录开始查找。
- 样式表在
src/main/resources/styles子目录:
scene.getStylesheets.add(getClass.getResource("/styles/style.css").toExternalForm())
三、常见问题排查
- 避免使用相对路径(如
style.css或./style.css):getResource的相对路径是相对于当前类的包路径,容易因类的包结构不同导致找不到资源 - 验证资源是否被正确打包:执行
sbt compile后,检查target/scala-<你的Scala版本>/classes目录下是否存在style.css(子目录结构会被保留) - 注意大小写:JavaFX资源查找区分大小写,确保文件名和路径拼写完全匹配
内容的提问来源于stack exchange,提问作者hegash
相关产品推荐
相关产品推荐

