gpt4 book ai didi

JavaFX 在 Webstart 中从 CSS 加载图像

转载 作者:技术小花猫 更新时间:2023-10-29 11:44:06 25 4
gpt4 key购买 nike

我目前在 JavaFX 中加载 CSS 和图像时遇到一个主要问题。

目标是让 JavaFX 加载 CSS 文件中定义的图像。我让它在 IDE 和独立执行中很容易工作。但是一旦我尝试将应用程序作为小程序并在浏览器上下文中运行它,一切都会失败。

CSS 文件仍能正确加载,但图像文件仍为空白。可悲的是,我找不到一种方法让 JavaFX 记录图像加载失败的原因。所有图像都位于 CSS 文件位置的子目录中,并且可以像这样访问:

.button-gray {
-fx-border-image-source: url("button/buttongray.png");
}

CSS 文件与处理加载它的类位于同一个包中,加载方式如下:

final URL css = Util.class.getResource("sheet.css");
if (css != null) {
parent.getStylesheets().add(css.toExternalForm());
}

我已经尝试将资源放在根目录中并使用 Util.class.getClassLoader.getResource(...)Thread.currentThread().getContextClassLoader.getResource( ...)。如果应用程序单独执行,两者都可以正常工作。如果应用程序是从 webstart applet 上下文启动的,两者都不起作用。

但正如我所说。在所有情况下,没有迹象表明 CSS 未加载。样式表中定义的样式已正确应用,但图像除外。

我不知道这是什么原因。我使用 shemnon 的 gradle javafx 插件打包和发布应用程序。

搭建环境:

  • 甲骨文 Java 1.7b45 x64
  • Gradle 1.9

任何人都知道如何解决这个问题或知道如何调试它。遗憾的是,JavaFX 的日志记录工具(甚至是 CSS Logger)和 applet 跟踪控制台没有给出问题所在的指示。

新信息!

JNLP 文件位于: JNLP-File

然而,这个文件不是问题。问题似乎是二进制 css 文件的生成,该文件是 JavaFX for webstart 部署过程的一部分。在这个二进制文件中,由于某些未知原因,构建环境引用了 CSS 文件。这会导致 CSS 加载器从我的构建服务器上的位置加载图像文件。在我的本地计算机上不起作用的东西。另一方面,我在本地计算机上进行的构建工作正常,因为文件仍在其查找的位置。

所以现在问题似乎仅限于存储完全错误的文件引用的二进制 css 生成。

最佳答案

1) 您可以发布您用于部署应用程序的 .jnlp 文件吗?不正确的 .jnlp 会导致这样的资源加载问题。

2) 向我们提供您正在使用的 Thread.currentThread().getContextCLassLoader.getResource("") 的确切调用。

3) 报告 .jar 文件的内容,以及您需要加载的 jar 文件的确切文件夹/路径结构。例如,“我的代码正在寻找 example.png,它应该在 com/mycompany/myimages 文件夹内的 pics.jar 文件中”,诸如此类。

WebStart 需要做一些工作才能开始工作,但我怀疑答案就在某处。如果一切都失败了,我发现 JaNeLa 有助于调试 web 启动部署问题。 http://pscode.org/janela/

关于JavaFX 在 Webstart 中从 CSS 加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20311202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com