From 736b30bac7e4b388d4b91bcab31b05c2ff8e1345 Mon Sep 17 00:00:00 2001 From: cade <920475030@qq.com> Date: Mon, 2 Jun 2025 23:38:41 +0800 Subject: [PATCH 1/2] slove --- src/main/java/club/shengsheng/A.java | 7 +++ .../java/club/shengsheng/MyClassLoader.java | 46 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/club/shengsheng/A.java diff --git a/src/main/java/club/shengsheng/A.java b/src/main/java/club/shengsheng/A.java new file mode 100644 index 0000000..55c3b1f --- /dev/null +++ b/src/main/java/club/shengsheng/A.java @@ -0,0 +1,7 @@ +package club.shengsheng; + +public class A { + public int say(){ + return 30; + } +} diff --git a/src/main/java/club/shengsheng/MyClassLoader.java b/src/main/java/club/shengsheng/MyClassLoader.java index 21026cf..7fb5f18 100644 --- a/src/main/java/club/shengsheng/MyClassLoader.java +++ b/src/main/java/club/shengsheng/MyClassLoader.java @@ -1,9 +1,55 @@ package club.shengsheng; + +import java.io.File; +import java.nio.file.Files; + /** * @author gongxuanzhangmelt@gmail.com **/ public class MyClassLoader extends ClassLoader { + @Override + protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException { + synchronized (getClassLoadingLock(name)) { + Class c = findLoadedClass(name); + if (c == null) { + if (name.startsWith("tech")){ + c = findClass(name); + }else{ + c = getParent().loadClass(name); + } + } + if (resolve) { + resolveClass(c); + } + return c; + } + } + + @Override + protected Class findClass(String name) throws ClassNotFoundException{ + String path = name.replace('.', '/').concat(".class"); + String classPath = System.getProperty("java.class.path"); + boolean specialOperation = false; + if (name.equals("tech.insight.ShengSheng")){ + classPath = "./"; + path = "加密.class"; + specialOperation = true; + } + File classFile = new File(classPath,path); + try { + byte[] classBytes = Files.readAllBytes(classFile.toPath()); + if (specialOperation){ + for (int i=0;i Date: Mon, 2 Jun 2025 23:39:52 +0800 Subject: [PATCH 2/2] slove --- src/main/java/club/shengsheng/A.java | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 src/main/java/club/shengsheng/A.java diff --git a/src/main/java/club/shengsheng/A.java b/src/main/java/club/shengsheng/A.java deleted file mode 100644 index 55c3b1f..0000000 --- a/src/main/java/club/shengsheng/A.java +++ /dev/null @@ -1,7 +0,0 @@ -package club.shengsheng; - -public class A { - public int say(){ - return 30; - } -}