我想知道 JavaFX Image 构造函数的相对路径解析算法是干什么用的:
- 独立应用程序。
- 浏览器部署的应用程序。
- Webstart 部署的应用程序。
如果该算法可能会在多个位置查找,我想知道它们对于上述每个部署场景是什么。
如果将应用程序放置在 jar 中时独立应用程序的行为不同,我也想知道这一点。
然后用户提供它的相对路径new Image(String url)
将相对于应用程序的工作目录又名System.getProperty("user.dir")
javaws myfxapp.jnlp
) 运行的 web-start 应用程序,它的工作方式与独立应用程序相同所以总体方向是:对于独立应用程序,使用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 在与 Richard Bair 讨论后,我们决定更改路径的当前(未记录)行为。目前,它们被视为 user.dir 相对。所有路径,无论是否带有前导斜杠,现在都将被解析为相对于类路径,这将与 CSS 一致,并且更符合用户的期望。对于 user.dir 相对路径,仍然可以使用“file:”URL。
如果您使用的是“/”,则答案是“/” getClass().getResourceAsStream()
,即 jar 文件的根目录(在其中)。不是 user.dir 也不是托管包的位置
getClass().getName().toString()
搜索与您的 .java 文件相关的类文件(类的名称)所在的目录 ,将您的图像复制并粘贴到那里Image image=new Image(getClass().getResourceAsStream("yourImageName.jpg"));
是必须的。在 NetBeans 中,类所在的目录 NetBeansProjects/JavaFXProjectName/build/classes/packageName/