0

I'm trying to get all the classes in the main package of my Bukkit plugin using this API

This is my code to get all of the classes

public class ClassFinder {

public static Set<Class<?>> getClasses(String packageName) {
    Set<Class<?>> classes= new HashSet<>();
    Reflections reflections = new Reflections(packageName);
    classes=reflections.getSubTypesOf(Object.class);
    return classes;
}

}

I was previously using a different way of getting all the classes, which was a bit more clunky, and didn't use this api. However, upon making subclasses, this method broke. I've tried a few different variations of this code, but it still throws a NoSuchMethodError.

Here's the Stack Trace

java.lang.NoSuchMethodError: com.google.common.collect.Sets$SetView.iterator()Lcom/google/common/collect/UnmodifiableIterator;
    at org.reflections.Reflections.expandSuperTypes(Reflections.java:380) ~[?:?]
    at org.reflections.Reflections.<init>(Reflections.java:126) ~[?:?]
    at org.reflections.Reflections.<init>(Reflections.java:168) ~[?:?]
    at org.reflections.Reflections.<init>(Reflections.java:141) ~[?:?]
    at pro.pvpgod.core.utils.ClassFinder.getClasses(ClassFinder.java:15) ~[?:?]
    at pro.pvpgod.core.Core.registerCommands(Core.java:109) ~[?:?]
    at pro.pvpgod.core.Core.onEnable(Core.java:95) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:376) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:326) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.reload(CraftServer.java:750) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.Bukkit.reload(Bukkit.java:540) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:25) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:650) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchServerCommand(CraftServer.java:636) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.DedicatedServer.aM(DedicatedServer.java:437) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:400) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_131]

Any help would be greatly appreciated :)

Knightz
  • 49
  • 1
  • 7
  • It looks like `Reflections` attempts to use an inappropriate version of google collections. Which version of reflections and google collections are you using? – Antot Aug 04 '17 at 09:51
  • I'm using the version it says to on the Reflections GitHub page, 0.9.11. As for Google Collections, how would I find out? – Knightz Aug 04 '17 at 10:01
  • @Antot, according to Google, collections is no longer used? – Knightz Aug 04 '17 at 14:30
  • The entity that causes the exception is from `com.google.common.collect.*` -> [guava lib](https://en.wikipedia.org/wiki/Google_Guava) which contains Google's implementations of collections. `NoSuchMethodError` means that the entity is there, but the method is not found. This is often the case when an incompatible version of a lib is loaded. BTW, do you use a build tool, ex.Maven? – Antot Aug 04 '17 at 15:02
  • @Anton Yeah, I'm using Maven. – Knightz Aug 04 '17 at 15:48
  • Nice, so if you are using Maven, execute `mvn dependency:tree` and check the version of guava, please. – Antot Aug 04 '17 at 16:49

0 Answers0