NutzCN Logo
问答 1.7.2版本修正,谁能提交发布一下到maven
发布于 4小时 作者 qq_eecb2520 10 次浏览 复制 上一个帖子 下一个帖子
标签:

一处是索引删除的处理,另外一处是jdk8反射兼容

if (dao.meta().isSqlServer()) {
				delSqls.add(Sqls.createf("DROP INDEX %s.%s", getTableName(dao, en, t), indexName));
			} else if (dao.meta().isMySql()) {
				delSqls.add(Sqls.createf("ALTER TABLE %s DROP INDEX %s", getTableName(dao, en, t), indexName));
			} else {
				delSqls.add(Sqls.createf("DROP INDEX %s", indexName));
			}

// 缓存 MethodHandles.Lookup.defineClass 方法(JDK 9+),若不存在则为 null private static final Method LOOKUP_DEFINE_CLASS_METHOD; // 缓存 ClassLoader.defineClass 方法(作为备选,JDK 1.0 起就有) private static final Method CLASSLOADER_DEFINE_CLASS_METHOD; protected static ProtectionDomain PROTECTION_DOMAIN; static { // 初始化保护域 PROTECTION_DOMAIN = getProtectionDomain(ReflectTool.class); // 1. 尝试获取 MethodHandles.Lookup.defineClass (JDK 9+) Method lookupMethod = null; try { Class<?> lookupClass = Class.forName("java.lang.invoke.MethodHandles$Lookup"); lookupMethod = lookupClass.getMethod("defineClass", byte[].class); } catch (Throwable e) { // JDK 8 及以下没有该方法,忽略 } LOOKUP_DEFINE_CLASS_METHOD = lookupMethod; // 2. 初始化 ClassLoader.defineClass 反射方法(始终可用) Method clMethod = null; try { Class<?> loaderClass = Class.forName("java.lang.ClassLoader"); clMethod = loaderClass.getDeclaredMethod("defineClass", String.class, byte[].class, int.class, int.class, ProtectionDomain.class); clMethod.setAccessible(true); } catch (Throwable e) { // 理论上不会发生 } CLASSLOADER_DEFINE_CLASS_METHOD = clMethod; }
0 回复
添加回复
请先登陆
回到顶部