使用谷歌反射加载资源文件

时间:2016-02-26 16:39:50

标签: google-reflections

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

This is my Image

我想使用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抛出以下异常

  

引起:java.lang.reflect.InvocationTargetException at   sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)     在   sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)     在   sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)     at java.lang.reflect.Constructor.newInstance(Constructor.java:422)     在   com.sun.javafx.application.LauncherImpl.lambda $ launchApplication1 $ 161(LauncherImpl.java:819)     在   com.sun.javafx.application.PlatformImpl.lambda $ runAndWait $ 175(PlatformImpl.java:326)     在   com.sun.javafx.application.PlatformImpl.lambda为$ null $ 173(PlatformImpl.java:295)     在java.security.AccessController.doPrivileged(Native Method)at   com.sun.javafx.application.PlatformImpl.lambda $ runLater $ 174(PlatformImpl.java:294)     在   com.sun.glass.ui.InvokeLaterDispatcher $ Future.run(InvokeLaterDispatcher.java:95)   引起:java.lang.NoSuchMethodError:   com.google.common.cache.CacheBuilder.maximumSize(I)LCOM /谷歌/普通/高速缓存/ CacheBuilder;     在   org.reflections.adapters.JavassistAdapter。(JavassistAdapter.java:28)     在   org.reflections.util.ConfigurationBuilder。(ConfigurationBuilder.java:41)     在org.reflections.Reflections $ 1。(Reflections.java:134)at   org.reflections.Reflections。(Reflections.java:134)at   org.reflections.Reflections。(Reflections.java:117)at   windchimes.ui.WindChimesApplication。(WindChimesApplication.java:27)     ......还有10个

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

1 个答案:

答案 0 :(得分:1)

您需要指定包前缀,我相信您正在寻找.fxml文件。这段代码应该有效。你能尝试一下吗?

    Reflections reflections = new Reflections(new ConfigurationBuilder().setScanners(new ResourcesScanner())
            .setUrls(ClasspathHelper.forPackage("windchimes.ui")));
    Set<String> res = reflections.getResources(Pattern.compile(".*\\.fxml"));