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

时间:2012-05-13 21:30:11

标签: javafx javafx-2

我想知道JavaFX Image构造函数的相对路径解析算法的用途:

  1. 独立应用。
  2. 浏览器部署的应用程序。
  3. Webstart部署了应用程序。
  4. 如果算法可能在多个位置查找,我想知道上述每个部署方案的用途。

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

3 个答案:

答案 0 :(得分:13)

然后,用户提供new Image(String url)的相对路径,它将相对于应用程序的工作目录System.getProperty("user.dir")

  1. 对于独立应用,它是您从
  2. 启动应用程序的文件夹
  3. 对于从命令行(javaws myfxapp.jnlp)运行的web-start应用程序,它的工作方式与独立应用程序相同
  4. 对于从浏览器加载的插件启动或webstart应用,您无法可靠地确定workdir位置。这取决于浏览器,甚至是该浏览器的已安装插件。
  5. 总体方向是:对于独立应用,使用url的方式与new File(String url)中使用的相同。对于jnlp / plugin,请使用带有协议或Class.getResource()方法的完整URL。

    更新:请注意,这种行为将在2.2中得到澄清和更改。见http://javafx-jira.kenai.com/browse/RT-18291

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

      

    Martin Sladecek发表评论 - 2012年5月15日10:53 AM   在与Richard Bair讨论后,我们决定改变路径的当前(未记录的)行为。目前,它们被视为user.dir relative。所有带有或不带有前导斜杠的路径现在将被解析为相对于类路径,这将与CSS一致,更多对应于用户期望的内容。   对于user.dir相对路径,仍可使用“file:”URL。

答案 1 :(得分:2)

如果您正在使用getClass().getResourceAsStream(),即jar文件的根(在其中),答案是“/”。不是user.dir,也不是托管包的地方

答案 2 :(得分:0)

  1. 搜索目录,其中存在与.java文件相关的类文件(类getClass().getName().toString()的名称),将图像复制并粘贴到那里
  2. Image image=new Image(getClass().getResourceAsStream("yourImageName.jpg"));是必须的。
  3. 在NetBeans中,存在类的目录NetBeansProjects / JavaFXProjectName / build / classes / packageName /