gpt4 book ai didi

java - 如何卸载 Java 标准库

转载 作者:行者123 更新时间:2023-12-04 05:54:53 24 4
gpt4 key购买 nike

是否可以卸载 Java 标准库 - 那些定义在 java.* 包中的库?

我的应用程序需要运行 JUnit 测试,每个测试都有自己的 ClassLoader,如下所示:

for(String testClass : testClasses) {
CustomClassLoader cl = new CustomClassLoader(this.getClass().getClassLoader());
Class<?> _class = cl.loadClass(testClass);
JUnitCore junit = new JUnitCore();
Result result = junit.run( _class );
registerResult(result, cl);
}

我遇到的问题是某些类没有卸载 - java.* 类。

如果我不卸载它们,那么如果测试类使用静态方法存储对象,就像 java.security.Security 类提供的那样,那么我会得到一个 ClassCastException.

有什么办法可以强制卸载吗?

最佳答案

无法强制卸载类。只要类或类的实例被引用,它就不会被 gc 收集。您必须在每次测试之前或之后手动删除这些全局值。

对于单元测试,您可以尝试在新的 jvm 中运行每个测试。 (这将避免静态类数据,但不会避免其他全局残留物,如文件)。

这些链接可能有帮助:

Running each JUnit test in a separate JVM in Eclipse?

How to tell Maven2 to execute jUnit tests one by one each in new JVM instance?

关于java - 如何卸载 Java 标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9633478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com