簡體   English   中英

Java 反射負載 class 來自測試 package

[英]Java reflection load class from test package

我有這個結構:

│   build.gradle
└───src
    ├───main
    │   └───java
    │          Main.java
    └───test
        └───java
               Test1.java

主要.java:

public class Main {

    public static void main(String[] args) throws ClassNotFoundException {
        Class<?> testClass = Class.forName("test.Test1");
    }
}

在主要方法中,我想獲取Test1 class 的元數據,它放在測試 package 中。 但是,我得到這個錯誤:

Exception in thread "main" java.lang.ClassNotFoundException: test.Test1
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:377)
    at Main.main(Main.java:4)

如何訪問測試 package 中的課程?

更新: 在此處輸入圖像描述 在此處輸入圖像描述

我相信這可能適用於 Gradle (至少版本 3.0 [歲] 或更高版本)。

Class<?> testClass = Thread.currentThread().getContextClassLoader()
    .loadClass("test.Test1");

(我假設Test1在 package test中,而不是如圖所示,在默認的 package 中。)

當然,從生產代碼訪問測試代碼是一個奇怪的設計選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM