[英]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.