首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有人能帮我了解一下org.reflections.Reflections jar上的jdk版本兼容性吗?

有人能帮我了解一下org.reflections.Reflections jar上的jdk版本兼容性吗?
EN

Stack Overflow用户
提问于 2016-12-06 06:42:31
回答 2查看 960关注 0票数 0

我第一次使用Reflections.jar,所以我想知道以下几点

  • 这个jar有版本兼容性(如上面的jdk6 (或)到jdk8)吗?
  • 加载类时,是否有任何加载顺序(如按字母顺序(或)排列的jar顺序放置在类路径中)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-12-07 07:57:44

如果您正在谈论这个https://github.com/ronmamo/reflections项目,那么它将按照类路径中类的出现顺序找到它们,就像Java所做的那样。https://docs.oracle.com/javase/8/docs/technotes/tools/findingclasses.html描述了类的查找和加载方式。

将加载类路径顺序中与完整类名匹配的第一个类文件。在下面找一个小片段来演示。

假设以下目录和文件

代码语言:javascript
复制
lib/annotations-2.0.1.jar
lib/guava-15.0.jar
lib/javassist-3.18.2-GA.jar
lib/reflections-0.9.9.jar
src/DummyInterface.java
src/Main.java
src1/DummyClass1.java
src2/DummyClass1.java

src/DummyInterface.java

代码语言:javascript
复制
package sub.optimal;
public interface DummyInterface {}

src/Main.java

代码语言:javascript
复制
import org.reflections.Reflections;
import sub.optimal.DummyInterface;
public class Main {
    public static void main(String[] args) throws Exception {
        Reflections reflections = new Reflections("sub.optimal");
        for (Class c : reflections.getSubTypesOf(DummyInterface.class)) {
            System.out.println("class: " + c.getCanonicalName());
            c.newInstance();
        }
   }
}

src1/DummyClass1.java

代码语言:javascript
复制
package sub.optimal;
public class DummyClass1 implements DummyInterface {
    static {
        System.out.println("touched DummyClass 1");
    }
}

src2/DummyClass1.java

代码语言:javascript
复制
package sub.optimal;
public class DummyClass1 implements DummyInterface {
    static {
        System.out.println("touched DummyClass 2");
    }
}

首先编译类,为了演示,我们在不同的位置创建类文件

代码语言:javascript
复制
javac -cp lib/* -d bin/ src/DummyInterface.java src/Main.java
javac -cp bin/:lib/* -d bin1/ src1/DummyClass1.java
javac -cp bin/:lib/* -d bin2/ src2/DummyClass1.java

在类路径中的Main之前使用bin1/执行bin2/将在bin1/中查找和加载DummyClass1

代码语言:javascript
复制
java -cp bin/:bin1/:bin2/:lib/* Main

输出

代码语言:javascript
复制
class: sub.optimal.DummyClass1
touched DummyClass 1

在类路径中的Main之前使用bin2/执行bin1/将在bin2/中查找和加载DummyClass1

代码语言:javascript
复制
java -cp bin/:bin2/:bin1/:lib/* Main

输出

代码语言:javascript
复制
class: sub.optimal.DummyClass1
touched DummyClass 2
票数 0
EN

Stack Overflow用户

发布于 2016-12-06 07:25:50

1)根据https://github.com/ronmamo/reflections/blob/master/pom.xml,它是用Java1.7编译的,因此它与java版本的>=1.7兼容

2) http://javarevisited.blogspot.ru/2012/07/when-class-loading-initialization-java-example.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40989328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档