@Override
    public Class<?> findClass(String name) throws ClassNotFoundException {
        String path = name.replace('.', '/')
                .concat(".class");
        ZipEntry entry = zipFile.getEntry(path);
        if (entry == null) {
            if (name.startsWith(PackageConst.PREFIX_TURMS_BASE)) {
                throw new ClassNotFoundException(
                        "Could not find the class ("
                                + name
                                + ") of Turms. This may happen if the plugin descriptor specifies a wrong server type, or the class has been removed by Turms");
            }
            throw new ClassNotFoundException(
                    "Could not find the class: "
                            + name);
        }

        byte[] bytes;
        try {
            bytes = ZipUtils.readEntry(zipFile, entry);
        } catch (IOException e) {
            throw new InputOutputException(
                    "Failed to load the class: "
                            + name,
                    e);
        }
        try {
            return defineClass(name, bytes, 0, bytes.length);
        } catch (Throwable e) {
            throw new InputOutputException(
                    "Failed to create the class: "
                            + name,
                    e);
        }
    }
We don't use {@link java.util.jar.JarFile} as we don't want to support multi-version JARs on
purpose, which just waste unnecessary resources.
turms-server-common/src/main/java/im/turms/server/common/infra/plugin/PluginClassLoader.java