问题描述
我想知道JavaFX Image构造函数的相对路径解析算法是干什么用的:
I would like to know what the JavaFX Image constructor's relative path resolution algorithm is for:
- 独立应用.
- 浏览器部署的应用.
- Webstart 部署的应用程序.
如果算法可能会在多个位置查看,我想知道对于上述每个部署场景它们是什么.
If the algorithm may look in multiple locations, I'd like to know what they are for each of the above deployment scenarios.
如果将应用放在 jar 中时,独立应用的行为会有所不同,我也想知道.
If the behaviour for stand-alone apps is different when the app is placed in a jar, I'd like to know that too.
推荐答案
然后用户提供 new Image(String url)
的相对路径,它将相对于应用程序的 workdir aka System.getProperty("user.dir")
Then user provides relative path to new Image(String url)
it will be relative against workdir of the app aka System.getProperty("user.dir")
- 对于独立应用程序,它是您从中启动应用程序的文件夹
- 对于从命令行 (
javaws myfxapp.jnlp
) 运行的网络启动应用程序,它的工作方式与独立应用程序相同 - 对于从浏览器加载的插件启动或 webstart 应用程序,您无法可靠地确定工作目录的位置.这取决于浏览器,甚至取决于为该浏览器安装的插件.
- For stand-alone app it's a folder you started an application from
- For web-start app being run from command line (
javaws myfxapp.jnlp
) it works the same way as with standalone app - For plugin start or webstart app loaded from browser you can't reliably be sure about workdir location. It depends on browser and even on installed plugins for that browser.
所以总体方向是:对于独立应用程序,使用 url
的方式与您在 new File(String url)
中的使用方式相同.对于 jnlp/plugin,使用带有协议或 Class.getResource()
方法的完整 url.
So general direction is: for standalone apps use url
same way as you'll use it in new File(String url)
. For jnlp/plugin use full url with protocol or Class.getResource()
approach.
更新:请注意,此行为将在 2.2 中得到澄清和更改.请参阅 http://javafx-jira.kenai.com/browse/RT-18291
Update: Please, note, this behavior is going to be clarified and changed in 2.2. See http://javafx-jira.kenai.com/browse/RT-18291
以下评论来自 RT-18291,概述了 2.2 的预期更改:
The following comment is from RT-18291 and outlines the intended changes for 2.2:
Martin Sladecek 添加了评论 - 2012 年 5 月 15 日上午 10:53在与 Richard Bair 讨论后,我们决定更改路径的当前(未记录的)行为.目前,它们被视为 user.dir 相对对象.所有路径,带或不带前导斜杠现在都将被解析为相对于类路径,这将与 CSS 一致,并且更符合用户的期望.对于 user.dir 相对路径,仍然可以使用 "file:" URL.
这篇关于javafx.scene.image.Image("flower.png") 在哪里寻找flower.png?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!