我試圖使用反射0.9.8庫,它來作爲一個超級罐子。如果我在我的項目的構建路徑中添加了JAR(「感言-0.9.8-uberjar」),那麼Eclipse將不會發現任何類類型的:反思,ClasspathHelper等。如何使用部署爲uberjar的庫?
如果我提取單「感言-0.9.8.jar」(不的尤伯杯一個),並將其添加到構建路徑,然後在編譯的時候一切正常,但是當我執行我的項目,我得到一個NoClassDefFoundError(我很確定它是由缺少依賴造成的)。
我也試着尤伯杯罐子中添加的每一個的.jar,但我還是會得到的NoClassDefFoundError。
我需要做些什麼來使用這個庫作爲uberjar發佈?
編輯: 在情況下,它可以幫助,這是我想打電話思考的方法(這是一個片段,我從Can you find all classes in a package using reflection?了):
private static Set<Class<?>> getAllClassesInPackage(String pckg){
List<ClassLoader> classLoadersList = new LinkedList<ClassLoader>();
classLoadersList.add(ClasspathHelper.contextClassLoader());
classLoadersList.add(ClasspathHelper.staticClassLoader());
Reflections reflections = new Reflections(new ConfigurationBuilder()
.setScanners(new SubTypesScanner(false), new ResourcesScanner())
.setUrls(ClasspathHelper.forClassLoader(classLoadersList.toArray(new ClassLoader[0])))
.filterInputsBy(new FilterBuilder().include(FilterBuilder.prefix(pckg))));
return reflections.getSubTypesOf(Object.class);
}
也許你會說什麼是沒有找到類,並檢查它是否可以在您手動連接罐子之一。 – dodecaplex