0

我正在开发一个 JavaFX 项目,我的项目结构如下。

这是我的图片

我想使用 Google Refletions加载*fxml文件/src/main/java/resources/view/primary/src/main/java/windchimes.ui/WindChimesApplication.java我尝试使用以下代码

Reflections reflections = new Reflections("windchimes.ui",new ResourcesScanner());
Set<String> scenePaths = reflections.getResources(Pattern.compile(".*fxml"));

当我运行上面的代码片段时,java会抛出以下异常

294) 在 com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) 引起:java.lang.NoSuchMethodError: com.google.common.cache.CacheBuilder.maximumSize(I)Lcom/google/普通/缓存/CacheBuilder;在 org.reflections.adapters.JavassistAdapter.(JavassistAdapter.java:28) 在 org.reflections.util.ConfigurationBuilder.(ConfigurationBuilder.java:41) 在 org.reflections.Reflections$1.(Reflections.java:134) 在 org. org.reflections.Reflections.(Reflections.java:117) 上的反射.Reflections.(Reflections.java:134) windchimes.ui.WindChimesApplication.(WindChimesApplication.java:27) ... 还有 10 个 maximumSize(I)Lcom/google/common/cache/CacheBuilder;在 org.reflections.adapters.JavassistAdapter.(JavassistAdapter.java:28) 在 org.reflections.util.ConfigurationBuilder.(ConfigurationBuilder.java:41) 在 org.reflections.Reflections$1.(Reflections.java:134) 在 org. org.reflections.Reflections.(Reflections.java:117) 上的反射.Reflections.(Reflections.java:134) windchimes.ui.WindChimesApplication.(WindChimesApplication.java:27) ... 还有 10 个 maximumSize(I)Lcom/google/common/cache/CacheBuilder;在 org.reflections.adapters.JavassistAdapter.(JavassistAdapter.java:28) 在 org.reflections.util.ConfigurationBuilder.(ConfigurationBuilder.java:41) 在 org.reflections.Reflections$1.(Reflections.java:134) 在 org. org.reflections.Reflections.(Reflections.java:117) 上的反射.Reflections.(Reflections.java:134) windchimes.ui.WindChimesApplication.(WindChimesApplication.java:27) ... 还有 10 个

我确信我没有根据我的用例创建反射对象。有人可以帮我吗 ?

4

1 回答 1

1

您需要指定包前缀,而且我相信您正在寻找 .fxml 文件。这段代码应该可以工作。你能试试吗?

    Reflections reflections = new Reflections(new ConfigurationBuilder().setScanners(new ResourcesScanner())
            .setUrls(ClasspathHelper.forPackage("windchimes.ui")));
    Set<String> res = reflections.getResources(Pattern.compile(".*\\.fxml"));
于 2016-02-26T20:43:53.957 回答