Guava Google 在 java 中使用反射
Guava Google using Reflections in java
我正在尝试在我的 Java 项目中使用 Reflections(也使用 Spring 引导),我必须获得实现接口的包的所有 类。
public static Object[] getClasses(String packageName) throws IOException
{
Reflections r = new Reflections(packageName);
Set<Class<? extends EntityXML>> allClasses = r.getSubTypesOf(EntityXML.class);
return (Object[]) allClasses.toArray();
}
但它 returns 我总是这个错误。
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 gcs.fds.focus.lib.utils.FindPackages.getClasses(FindPackages.java:14)
...
我尝试导入 google.guava 包来避免这个错误,它修复了它,但我不想导入它,因为它是一个没有在我的项目中使用的包。
知道如何避免这个错误吗?
好的我解决了!
我删除了 google.guava 依赖项,并创建了一个
mvn dependency:tree
我可以看到我的其他依赖项也导入了 google.guava,但是我读到的版本 19 造成了这种冲突。 (everit.json 依赖项),所以我从这个依赖项中排除了 google.guava,它起作用了!
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>org.everit.json.schema</artifactId>
<version>1.3.0</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>
我正在尝试在我的 Java 项目中使用 Reflections(也使用 Spring 引导),我必须获得实现接口的包的所有 类。
public static Object[] getClasses(String packageName) throws IOException
{
Reflections r = new Reflections(packageName);
Set<Class<? extends EntityXML>> allClasses = r.getSubTypesOf(EntityXML.class);
return (Object[]) allClasses.toArray();
}
但它 returns 我总是这个错误。
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 gcs.fds.focus.lib.utils.FindPackages.getClasses(FindPackages.java:14)
...
我尝试导入 google.guava 包来避免这个错误,它修复了它,但我不想导入它,因为它是一个没有在我的项目中使用的包。
知道如何避免这个错误吗?
好的我解决了!
我删除了 google.guava 依赖项,并创建了一个
mvn dependency:tree
我可以看到我的其他依赖项也导入了 google.guava,但是我读到的版本 19 造成了这种冲突。 (everit.json 依赖项),所以我从这个依赖项中排除了 google.guava,它起作用了!
<dependency>
<groupId>org.everit.json</groupId>
<artifactId>org.everit.json.schema</artifactId>
<version>1.3.0</version>
<exclusions>
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</exclusion>
</exclusions>
</dependency>