无法在JavaFX项目中使用getResource()访问资源

时间:2019-08-07 08:57:03

标签: java gradle javafx resources javafx-8

我知道这似乎是一个常见的主题,但到目前为止, StackOverflow上没有任何解决方案。请参阅下面的所有尝试内容。

问题:无论尝试使用哪种路径,getResource()方法都无法为我的项目检索资源。

项目结构::所讨论的资源为mainWindow.fxml,我尝试在其中检索的类为Main.java

src/
|-- main/
    |-- java/
        |-- app/
            |-- myproject/
                |> FXMLController.java
                |> Main.java
                |> package-info.java
                |> styles.css
                |> mainWindow.fxml
        |> module-info.java
    |-- resources/
|-- test/
|> build.gradle
|> gradlew
|> gradlew.bat
|> settings.gradle

但是,请注意,我还尝试将资源放入resources/resources/fxml/内,并尝试了所有路径(见下文)。

我尝试过的路径:以下路径已尝试使用上述所有路径,并且都使用getClass().getResource() getClass().getClassLoader().getResource()。< / p>

  • mainWindow.fxml
  • /mainWindow.fxml
  • fxml/mainWindow.fxml
  • /fxml/mainWindow.fxml

如果有帮助,我正在Windows上并使用IntelliJ IDEA社区版。

1 个答案:

答案 0 :(得分:0)

以下是我们在JavaFX 8应用程序上使用的一些代码,它们将非常有用
我们用fx-id命名所有锚定窗格。如果使用Maven应用程序制作JavaFX,则此代码将不起作用。 toChildView()是按钮的动作事件

export class EventService {

  test$ = new Subject();
  watch() {
   return this.test$;
  }
  push() {
   this.test$.next('Hello World');
  }
}

export class Component {
  watch() {
    this.eventService.watch().subscribe((obj)=>{ console.log('Helo', obj)});
  }
  test() {
    this.eventService.push();
  }
  unsubscribe(){
    this.eventService.watch().unsubscribe();
  }
}