Skip to content

Commit 11ffce2

Browse files
authored
commit exercise (#31)
merge
1 parent d6fc20c commit 11ffce2

1 file changed

Lines changed: 35 additions & 0 deletions

File tree

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
11
package club.shengsheng;
22

33

4+
import java.io.File;
5+
import java.nio.file.Files;
6+
47
/**
58
* @author gongxuanzhangmelt@gmail.com
69
**/
710
public class MyClassLoader extends ClassLoader {
811

12+
@Override
13+
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException {
14+
synchronized (getClassLoadingLock(name)) {
15+
Class<?> c = findLoadedClass(name);
16+
if (c == null) {
17+
if (name.startsWith("tech")) {
18+
c = findClass(name);
19+
} else {
20+
c = getParent().loadClass(name);
21+
}
22+
}
23+
if (resolve) {
24+
resolveClass(c);
25+
}
26+
return c;
27+
}
28+
}
29+
30+
@Override
31+
protected Class<?> findClass(String name) throws ClassNotFoundException {
32+
File classFile = new File(System.getProperty("user.dir") + File.separator + "加密.class");
33+
try {
34+
byte[] bytes = Files.readAllBytes(classFile.toPath());
35+
for (int i = 0; i < bytes.length; i++) {
36+
bytes[i] = (byte) (bytes[i] - 1);
37+
}
38+
return defineClass(name, bytes, 0, bytes.length);
39+
} catch (Exception e) {
40+
throw new ClassNotFoundException(name);
41+
}
42+
}
43+
944
}

0 commit comments

Comments
 (0)