8263470: Consolidate copies of getClassBytes in various tests
Reviewed-by: hseigel, stuefe, mseledtsov
This commit is contained in:
parent
0ea48d9d65
commit
b932a62c44
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,13 +29,14 @@
|
||||
* java.lang.Object class.
|
||||
* Also, make sure the vm doesn't crash on notification for unloading an invalid
|
||||
* java.lang.Object class.
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.compiler
|
||||
* @run main TestUnloadClassError
|
||||
*/
|
||||
|
||||
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class TestUnloadClassError extends ClassLoader {
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -28,7 +28,7 @@
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.compiler
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @compile p2/c2.java MyDiffClassLoader.java
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -36,7 +36,7 @@
|
||||
*/
|
||||
|
||||
import sun.hotspot.WhiteBox;
|
||||
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class ConstantPoolDependsTest {
|
||||
public static WhiteBox wb = WhiteBox.getWhiteBox();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -28,7 +28,7 @@
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.compiler
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @compile p2/c2.java MyDiffClassLoader.java
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -36,6 +36,7 @@
|
||||
*/
|
||||
import sun.hotspot.WhiteBox;
|
||||
import java.lang.reflect.Method;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class DictionaryDependsTest {
|
||||
public static WhiteBox wb = WhiteBox.getWhiteBox();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,7 +26,7 @@
|
||||
* @summary This test case uses a java.lang.Class instance to keep a class alive.
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build sun.hotspot.WhiteBox test.Empty
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -35,6 +35,7 @@
|
||||
|
||||
import java.lang.ref.SoftReference;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that classes are not unloaded when specific types of references are kept to them.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,7 +26,7 @@
|
||||
* @summary This test case uses a java.lang.ClassLoader instance to keep a class alive.
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build sun.hotspot.WhiteBox test.Empty
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -34,6 +34,7 @@
|
||||
*/
|
||||
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that classes are not unloaded when specific types of references are kept to them.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,7 +26,7 @@
|
||||
* @summary This test case uses a class instance to keep the class alive.
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build sun.hotspot.WhiteBox test.Empty
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -34,6 +34,7 @@
|
||||
*/
|
||||
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that classes are not unloaded when specific types of references are kept to them.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,7 +26,7 @@
|
||||
* @summary This test case uses a java.lang.ref.SoftReference referencing a class instance to keep a class alive.
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build sun.hotspot.WhiteBox test.Empty
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -35,6 +35,7 @@
|
||||
|
||||
import java.lang.ref.SoftReference;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that classes are not unloaded when specific types of references are kept to them.
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -23,6 +23,7 @@
|
||||
|
||||
import java.io.*;
|
||||
import jdk.test.lib.compiler.InMemoryJavaCompiler;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class MyDiffClassLoader extends ClassLoader {
|
||||
|
||||
@ -48,25 +49,10 @@ public class MyDiffClassLoader extends ClassLoader {
|
||||
return c;
|
||||
}
|
||||
|
||||
byte[] data = switchClassData ? getNewClassData(name) : getClassData(name);
|
||||
byte[] data = switchClassData ? getNewClassData(name) : ClassUnloadCommon.getClassData(name);
|
||||
System.out.println("name is " + name);
|
||||
return defineClass(name, data, 0, data.length);
|
||||
}
|
||||
byte[] getClassData(String name) {
|
||||
try {
|
||||
String TempName = name.replaceAll("\\.", "/");
|
||||
String currentDir = System.getProperty("test.classes");
|
||||
String filename = currentDir + File.separator + TempName + ".class";
|
||||
FileInputStream fis = new FileInputStream(filename);
|
||||
byte[] b = new byte[5000];
|
||||
int cnt = fis.read(b, 0, 5000);
|
||||
byte[] c = new byte[cnt];
|
||||
for (int i=0; i<cnt; i++) c[i] = b[i];
|
||||
return c;
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Return p2.c2 with everything removed
|
||||
byte[] getNewClassData(String name) {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -28,14 +28,16 @@
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.compiler
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @compile p2/c2.java MyDiffClassLoader.java
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* @run main/othervm -Xbootclasspath/a:. -Xmn8m -XX:+UnlockDiagnosticVMOptions -Xlog:class+unload -XX:+WhiteBoxAPI SuperDependsTest
|
||||
*/
|
||||
|
||||
import sun.hotspot.WhiteBox;
|
||||
import p2.*;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class SuperDependsTest {
|
||||
public static WhiteBox wb = WhiteBox.getWhiteBox();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,7 +25,7 @@
|
||||
* @test UnloadInterfaceTest
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @compile test/Interface.java
|
||||
* @compile test/ImplementorClass.java
|
||||
* @build sun.hotspot.WhiteBox
|
||||
@ -35,6 +35,7 @@
|
||||
import sun.hotspot.WhiteBox;
|
||||
import test.Interface;
|
||||
import java.lang.ClassLoader;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that class unloaded removes the implementor from its the interface that it implements
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,13 +26,14 @@
|
||||
* @bug 8210559
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build sun.hotspot.WhiteBox test.Empty
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* @run main/othervm -Xbootclasspath/a:. -Xmn8m -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xlog:class+unload=debug UnloadTest
|
||||
*/
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
/**
|
||||
* Test that verifies that classes are unloaded when they are no longer reachable.
|
||||
|
@ -31,7 +31,7 @@
|
||||
* @run main/native NullClassBytesTest
|
||||
*/
|
||||
|
||||
import java.io.*;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class NullClassBytesTest {
|
||||
|
||||
@ -50,7 +50,7 @@ public class NullClassBytesTest {
|
||||
|
||||
// load the class data from the connection
|
||||
if (name.equals("A")) {
|
||||
byte[] b = getClassData("A");
|
||||
byte[] b = ClassUnloadCommon.getClassData("A");
|
||||
return defineClass(name, b, 0, b.length);
|
||||
} else if (name.equals("B")) {
|
||||
byte[] b = new byte[0];
|
||||
@ -69,14 +69,6 @@ public class NullClassBytesTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
byte[] getClassData(String name) {
|
||||
try {
|
||||
return SimpleLoader.class.getClassLoader().getResourceAsStream(name + ".class").readAllBytes();
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(java.lang.String[] unused) throws Exception {
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2017, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,7 +25,7 @@
|
||||
* @test
|
||||
* @bug 8174749 8213307
|
||||
* @summary MemberNameTable should reuse entries
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @modules java.compiler
|
||||
* @build sun.hotspot.WhiteBox
|
||||
@ -45,6 +45,7 @@ import jdk.test.lib.Utils;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import sun.hotspot.code.Compiler;
|
||||
import sun.hotspot.gc.GC;
|
||||
import jdk.test.lib.classloader.ClassWithManyMethodsClassLoader;
|
||||
|
||||
public class MemberNameLeak {
|
||||
private static String className = "MemberNameLeakTestClass";
|
||||
|
@ -28,7 +28,7 @@
|
||||
* successfully but fail validation. This tests a specific, otherwise
|
||||
* untested, code path in ResolutionErrorTable::free_entry.
|
||||
*
|
||||
* @library /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @compile TestNestHostErrorWithClassUnload.java
|
||||
* Helper.java
|
||||
* PackagedNestHost.java
|
||||
@ -62,6 +62,8 @@ import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class TestNestHostErrorWithClassUnload {
|
||||
|
||||
static final MethodType INVOKE_T = MethodType.methodType(void.class);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -27,10 +27,13 @@
|
||||
* @summary Hello World test for AppCDS custom loader support
|
||||
* @requires vm.cds
|
||||
* @requires vm.cds.custom.loaders
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /runtime/testlibrary
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
|
||||
* @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
|
||||
* @build sun.hotspot.WhiteBox ClassUnloadCommon
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
|
||||
* @build sun.hotspot.WhiteBox jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$1
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
|
||||
* @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
|
||||
* @run driver HelloCustom
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -30,10 +30,13 @@
|
||||
* @requires vm.hasJFR
|
||||
* @requires vm.cds
|
||||
* @requires vm.cds.custom.loaders
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /runtime/testlibrary
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
|
||||
* @compile test-classes/HelloUnload.java test-classes/CustomLoadee.java
|
||||
* @build sun.hotspot.WhiteBox ClassUnloadCommon
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
|
||||
* @build sun.hotspot.WhiteBox jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$1
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
|
||||
* @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
|
||||
* @run driver HelloCustom_JFR
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,13 +29,13 @@
|
||||
* @requires vm.cds
|
||||
* @requires vm.cds.custom.loaders
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/testlibrary
|
||||
* @build sun.hotspot.WhiteBox ClassUnloadCommon
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds
|
||||
* @build sun.hotspot.WhiteBox jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* @compile test-classes/UnloadUnregisteredLoader.java test-classes/CustomLoadee.java
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* ClassUnloadCommon
|
||||
* ClassUnloadCommon$1
|
||||
* ClassUnloadCommon$TestFailure
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$1
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$TestFailure
|
||||
* @run driver UnloadUnregisteredLoaderTest
|
||||
*/
|
||||
|
||||
@ -46,7 +46,9 @@ public class UnloadUnregisteredLoaderTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
String appJar1 = JarBuilder.build("UnloadUnregisteredLoader_app1", "UnloadUnregisteredLoader");
|
||||
String appJar2 = JarBuilder.build(true, "UnloadUnregisteredLoader_app2",
|
||||
"ClassUnloadCommon", "ClassUnloadCommon$1", "ClassUnloadCommon$TestFailure");
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon",
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon$1",
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon$TestFailure");
|
||||
String customJarPath = JarBuilder.build("UnloadUnregisteredLoader_custom", "CustomLoadee");
|
||||
String wbJar = JarBuilder.build(true, "WhiteBox", "sun/hotspot/WhiteBox");
|
||||
String use_whitebox_jar = "-Xbootclasspath/a:" + wbJar;
|
||||
@ -54,9 +56,9 @@ public class UnloadUnregisteredLoaderTest {
|
||||
String classpath = TestCommon.concatPaths(appJar1, appJar2);
|
||||
String classlist[] = new String[] {
|
||||
"UnloadUnregisteredLoader",
|
||||
"ClassUnloadCommon",
|
||||
"ClassUnloadCommon$1",
|
||||
"ClassUnloadCommon$TestFailure",
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon",
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon$1",
|
||||
"jdk/test/lib/classloader/ClassUnloadCommon$TestFailure",
|
||||
"java/lang/Object id: 1",
|
||||
"CustomLoadee id: 2 super: 1 source: " + customJarPath,
|
||||
};
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@ import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class HelloUnload {
|
||||
private static String className = "CustomLoadee";
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@ import java.io.File;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class UnloadUnregisteredLoader {
|
||||
public static void main(String args[]) throws Exception {
|
||||
|
@ -26,10 +26,13 @@
|
||||
* @test
|
||||
* @summary Hello World test for dynamic archive with custom loader
|
||||
* @requires vm.cds
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes /runtime/testlibrary
|
||||
* @build HelloUnload CustomLoadee ClassUnloadCommon
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes
|
||||
* @build HelloUnload CustomLoadee jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$1
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
|
||||
* @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:./WhiteBox.jar HelloDynamicCustom
|
||||
|
@ -29,10 +29,13 @@
|
||||
* dump time and run time. The custom loader will be unloaded
|
||||
* during dump time.
|
||||
* @requires vm.cds
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes /runtime/testlibrary
|
||||
* @build HelloUnload CustomLoadee ClassUnloadCommon
|
||||
* @library /test/lib /test/hotspot/jtreg/runtime/cds/appcds /test/hotspot/jtreg/runtime/cds/appcds/customLoader/test-classes
|
||||
* @build HelloUnload CustomLoadee jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload ClassUnloadCommon ClassUnloadCommon$1 ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello.jar HelloUnload
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$1
|
||||
* jdk.test.lib.classloader.ClassUnloadCommon$TestFailure
|
||||
* @run driver ClassFileInstaller -jar hello_custom.jar CustomLoadee
|
||||
* @run driver ClassFileInstaller -jar WhiteBox.jar sun.hotspot.WhiteBox
|
||||
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+WhiteBoxAPI -Xbootclasspath/a:./WhiteBox.jar HelloDynamicCustomUnload
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -29,7 +29,7 @@
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* java.base/jdk.internal.org.objectweb.asm
|
||||
* java.management
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @build p1.AnonSymbolLeak
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
@ -39,6 +39,7 @@
|
||||
import java.lang.reflect.Method;
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.Asserts;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class TestAnonSymbolLeak {
|
||||
static String className = "p1.AnonSymbolLeak";
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -27,7 +27,7 @@
|
||||
* @bug 8142506
|
||||
* @requires vm.opt.final.ClassUnloading
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary
|
||||
* @library /test/lib
|
||||
* @library classes
|
||||
* @build test.Empty
|
||||
* @run driver ClassLoadUnloadTest
|
||||
@ -41,6 +41,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class ClassLoadUnloadTest {
|
||||
private static OutputAnalyzer out;
|
||||
private static ProcessBuilder pb;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,7 +26,7 @@
|
||||
* @test LoaderConstraintsTest
|
||||
* @bug 8149996
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib /runtime/testlibrary classes
|
||||
* @library /test/lib classes
|
||||
* @run driver LoaderConstraintsTest
|
||||
*/
|
||||
|
||||
@ -38,6 +38,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class LoaderConstraintsTest {
|
||||
private static OutputAnalyzer out;
|
||||
private static ProcessBuilder pb;
|
||||
|
@ -25,23 +25,18 @@
|
||||
* @test
|
||||
* @bug 8187305
|
||||
* @summary Tests logging of shared library loads and unloads.
|
||||
* @library /runtime/testlibrary /test/lib
|
||||
* @library /test/lib
|
||||
* @build sun.hotspot.WhiteBox
|
||||
* @run driver ClassFileInstaller sun.hotspot.WhiteBox
|
||||
* @run main LoadLibraryTest
|
||||
*/
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
|
||||
import jdk.test.lib.process.ProcessTools;
|
||||
import jdk.test.lib.process.OutputAnalyzer;
|
||||
import jtreg.SkippedException;
|
||||
|
||||
import sun.hotspot.WhiteBox;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
public class LoadLibraryTest {
|
||||
|
||||
@ -86,18 +81,6 @@ public class LoadLibraryTest {
|
||||
|
||||
public static class MyClassLoader extends ClassLoader {
|
||||
|
||||
static ByteBuffer readClassFile(String name) {
|
||||
File f = new File(testClasses, name);
|
||||
try (FileInputStream fin = new FileInputStream(f);
|
||||
FileChannel fc = fin.getChannel())
|
||||
{
|
||||
return fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("Can't open file: " + name +
|
||||
", exception: " + e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
protected Class<?> loadClass(String name, boolean resolve)
|
||||
throws ClassNotFoundException {
|
||||
Class<?> c;
|
||||
@ -117,7 +100,8 @@ public class LoadLibraryTest {
|
||||
if (!CLASS_NAME.equals(name)) {
|
||||
throw new ClassNotFoundException("Unexpected class: " + name);
|
||||
}
|
||||
return defineClass(name, readClassFile(name + ".class"), null);
|
||||
byte[] class_bytes = ClassUnloadCommon.getClassData(name);
|
||||
return defineClass(name, class_bytes, 0, class_bytes.length);
|
||||
}
|
||||
} // MyClassLoader
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -27,6 +27,7 @@
|
||||
* defined in an unnamed module. Access allowed since unnamed module
|
||||
* can read unnamed module even when class p1.c1 is loaded by
|
||||
* a different loader than p2.c2.
|
||||
* @library /test/lib
|
||||
* @compile myloaders/MyDiffClassLoader.java
|
||||
* @compile p2/c2.java
|
||||
* @compile p1/c1.java
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@
|
||||
* @summary class p3.c3 defined in a named package in an unnamed module tries to access c4
|
||||
* defined in an unnamed package in an unnamed module. Access allowed since
|
||||
* any class in an unnamed module can read an unnamed module.
|
||||
* @library /test/lib
|
||||
* @compile myloaders/MyDiffClassLoader.java
|
||||
* @compile c4.java
|
||||
* @compile p3/c3.jcod
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,6 +25,7 @@
|
||||
* @test
|
||||
* @summary Test public type c5 defined in an unnamed package and unnamed module can
|
||||
* access public type p6.c6 defined in an unnamed module.
|
||||
* @library /test/lib
|
||||
* @compile myloaders/MyDiffClassLoader.java
|
||||
* @compile p6/c6.java
|
||||
* @compile c5.java
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,6 +25,7 @@
|
||||
* @test
|
||||
* @summary Test public type c5 defined in an unnamed package and unnamed module can
|
||||
* access public type p6.c6 defined in an unnamed module.
|
||||
* @library /test/lib
|
||||
* @compile myloaders/MySameClassLoader.java
|
||||
* @compile p6/c6.java
|
||||
* @compile c5.java
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@
|
||||
* @summary class p3.c3 defined in an unnamed module tries to access c4 defined in an unnamed package
|
||||
* and an unnamed module.
|
||||
* Access allowed since any class in an unnamed module can read an unnamed module.
|
||||
* @library /test/lib
|
||||
* @compile myloaders/MySameClassLoader.java
|
||||
* @compile c4.java
|
||||
* @compile p3/c3.jcod
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -24,6 +24,7 @@ package myloaders;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.module.ModuleReference;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
// Declare a MyDiffClassLoader class to be used to map modules to.
|
||||
// This class loader will also be used to load classes within modules.
|
||||
@ -49,24 +50,9 @@ public class MyDiffClassLoader extends ClassLoader
|
||||
return MyDiffClassLoader.loader2.loadClass(name);
|
||||
}
|
||||
|
||||
byte[] data = getClassData(name);
|
||||
byte[] data = ClassUnloadCommon.getClassData(name);
|
||||
return defineClass(name, data, 0, data.length);
|
||||
}
|
||||
byte[] getClassData(String name) {
|
||||
try {
|
||||
String TempName = name.replaceAll("\\.", "/");
|
||||
String currentDir = System.getProperty("test.classes");
|
||||
String filename = currentDir + File.separator + TempName + ".class";
|
||||
FileInputStream fis = new FileInputStream(filename);
|
||||
byte[] b = new byte[5000];
|
||||
int cnt = fis.read(b, 0, 5000);
|
||||
byte[] c = new byte[cnt];
|
||||
for (int i=0; i<cnt; i++) c[i] = b[i];
|
||||
return c;
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void register(ModuleReference mref) { }
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -24,6 +24,7 @@ package myloaders;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.module.ModuleReference;
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
// Declare a MySameClassLoader class to be used to map modules to the same
|
||||
// class loader. This class loader will also be used to load classes
|
||||
@ -45,24 +46,9 @@ public class MySameClassLoader extends ClassLoader
|
||||
!name.equals("p6.c6")) {
|
||||
return super.loadClass(name);
|
||||
}
|
||||
byte[] data = getClassData(name);
|
||||
byte[] data = ClassUnloadCommon.getClassData(name);
|
||||
return defineClass(name, data, 0, data.length);
|
||||
}
|
||||
byte[] getClassData(String name) {
|
||||
try {
|
||||
String TempName = name.replaceAll("\\.", "/");
|
||||
String currentDir = System.getProperty("test.classes");
|
||||
String filename = currentDir + File.separator + TempName + ".class";
|
||||
FileInputStream fis = new FileInputStream(filename);
|
||||
byte[] b = new byte[5000];
|
||||
int cnt = fis.read(b, 0, 5000);
|
||||
byte[] c = new byte[cnt];
|
||||
for (int i=0; i<cnt; i++) c[i] = b[i];
|
||||
return c;
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public void register(ModuleReference mref) { }
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -24,7 +24,7 @@
|
||||
/**
|
||||
* @test
|
||||
* @modules java.base/jdk.internal.misc
|
||||
* @library /test/lib ..
|
||||
* @library /test/lib
|
||||
* @compile p2/c2.java
|
||||
* @compile p4/c4.java
|
||||
* @build sun.hotspot.WhiteBox
|
||||
@ -40,6 +40,8 @@ import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import static jdk.test.lib.Asserts.*;
|
||||
|
||||
import jdk.test.lib.classloader.ClassUnloadCommon;
|
||||
|
||||
// Test that the message in a runtime ClassCastException contains module info.
|
||||
public class CCE_module_msg {
|
||||
private static final Path CLASSES_DIR = Paths.get("classes");
|
||||
@ -208,23 +210,7 @@ class MyURLClassLoader extends URLClassLoader {
|
||||
if (!name.equals("p4.c4")) {
|
||||
return super.loadClass(name);
|
||||
}
|
||||
byte[] data = getClassData(name);
|
||||
byte[] data = ClassUnloadCommon.getClassData(name);
|
||||
return defineClass(name, data, 0, data.length);
|
||||
}
|
||||
|
||||
byte[] getClassData(String name) {
|
||||
try {
|
||||
String TempName = name.replaceAll("\\.", "/");
|
||||
String currentDir = System.getProperty("test.classes");
|
||||
String filename = currentDir + File.separator + TempName + ".class";
|
||||
FileInputStream fis = new FileInputStream(filename);
|
||||
byte[] b = new byte[5000];
|
||||
int cnt = fis.read(b, 0, 5000);
|
||||
byte[] c = new byte[cnt];
|
||||
for (int i=0; i<cnt; i++) c[i] = b[i];
|
||||
return c;
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2013, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -28,6 +28,8 @@
|
||||
*/
|
||||
|
||||
|
||||
package jdk.test.lib.classloader;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
@ -111,18 +113,10 @@ public class ClassUnloadCommon {
|
||||
// Get data for pre-compiled class file to load.
|
||||
public static byte[] getClassData(String name) {
|
||||
try {
|
||||
String TempName = name.replaceAll("\\.", "/");
|
||||
String currentDir = System.getProperty("test.classes");
|
||||
String filename = currentDir + File.separator + TempName + ".class";
|
||||
System.out.println("filename is " + filename);
|
||||
FileInputStream fis = new FileInputStream(filename);
|
||||
byte[] b = new byte[5000];
|
||||
int cnt = fis.read(b, 0, 5000);
|
||||
byte[] c = new byte[cnt];
|
||||
for (int i=0; i<cnt; i++) c[i] = b[i];
|
||||
return c;
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
String tempName = name.replaceAll("\\.", "/");
|
||||
return ClassUnloadCommon.class.getClassLoader().getResourceAsStream(tempName + ".class").readAllBytes();
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2019, 2021, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -21,6 +21,8 @@
|
||||
* questions.
|
||||
*/
|
||||
|
||||
package jdk.test.lib.classloader;
|
||||
|
||||
import java.io.DataInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.File;
|
Loading…
x
Reference in New Issue
Block a user