【问题标题】:JavaFX image getUrl() causing NoSuchMethodError in Excelsior jetJavaFX 图像 getUrl() 在 Excelsior jet 中导致 NoSuchMethodError
【发布时间】:2018-08-26 14:11:09
【问题描述】:

我正在尝试使用 Excelsior Jet 编译我的 javaFx 应用程序,它工作正常,除了当我在类型 javafx.scene.image.Image 上使用 getUrl() 时, 此方法存在,当我从 eclipse 运行应用程序时它可以工作,但是当我在 excelsior 中运行它时,我收到以下错误:

Exception in thread "JavaFX Application Thread" java.lang.NoSuchMethodError: getUrl

我不确定它是如何工作的,但我认为 excelsior 的库中可能缺少某些东西,有没有办法解决这个问题?

【问题讨论】:

    标签: java javafx java-8 compilation


    【解决方案1】:

    如果你查看这个方法的文档

    docs for getUrl()

    你会看到,这个方法是在 Java 9 中引入的,我假设 Excelsior Jet 仍然基于 Java 8。

    【讨论】:

    • 我检查了文档,这是完全正确的,你的回答并没有解决问题,但它回答了我的问题,所以我会接受它,但我真的需要一些破解
    • 你不记得你传递给构造函数的 URL 字符串还是你从 FXML 创建的图像?如果您从流中创建图像,那么缺少的方法无论如何都会返回 null。
    • 不,我使用文件创建了图像,是的,这是个好主意,我会试试这个
    • 我找到了解决方案并将其发布为答案,谢谢您的帮助
    【解决方案2】:

    我根据这个建议 "just remember the URL" 找到了解决此问题的方法,方法是创建一个名为 Image 的新类,该类扩展 javafx.scene.image.Image 并为其提供新的 url 属性和获取它的方法

    public class Image extends javafx.scene.image.Image{
    
        String url;
    
        public Image(String url) {
            super(url);
            this.url = url;
        }
    
        public String geturl() {
            return url;
        }
    
    }
    

    然后调用 geturl() 而不是 getUrl() (因为我无法覆盖最终方法 getUrl() )。

    【讨论】:

      猜你喜欢
      • 2017-01-18
      • 1970-01-01
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-10-20
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多