javafx.scene.image.Image(“flower.png”)在哪里寻找flower.png?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (22)

我想知道什么JavaFX图像构造函数的相对路径分辨率算法是:

  1. 独立应用程序。
  2. 浏览器部署的应用
  3. Webstart部署的应用程序。

如果算法可能在多个位置查找,我想知道它们对于上述每个部署方案都是什么。

如果应用程序放在jar中时,独立应用程序的行为不同,我也想知道这一点。

提问于
用户回答回答于

那么用户提供的相对路径new Image(String url)将与应用程序的工作目录相对System.getProperty("user.dir")

  1. 对于独立应用程序,它是您从中启动应用程序的文件夹
  2. 对于从命令行(javaws myfxapp.jnlp)运行的web-start应用程序,其工作方式与独立应用程序相同
  3. 对于从浏览器加载的插件启动或webstart应用程序,无法可靠地确定workdir的位置。这取决于浏览器,甚至是该浏览器的安装插件。

所以一般的方向是:独立的应用程序使用url相同的方式,你会用它new File(String url)。对于jnlp /插件使用完整的URL与协议或Class.getResource()方法。

请注意,此行为将在2.2中进行澄清和更改。请参阅http://javafx-jira.kenai.com/browse/RT-18291

以下评论来自RT-18291并概述了2.2的预期变化:

Martin Sladecek添加了一条评论 - 2012年5月15日上午10:53在与Richard Bair讨论后,我们决定改变路径的当前(未记录的)行为。目前,它们被视为相对于user.dir。所有路径,无论是否带前导斜杠,现在都将相对于类路径解决,这将与CSS一致,更符合用户的期望。对于user.dir相对路径,“file:”URL仍然可以使用。

用户回答回答于

如果你正在使用的话getClass().getResourceAsStream(),答案是“/” ,即你的jar文件的根目录(在它里面)。不是user.dir,也不包含该软件包的托管位置

扫码关注云+社区