From c744c721277bce326b9dfc287d9907ac5e754394 Mon Sep 17 00:00:00 2001 From: Qin Dong Ming <2720806930@qq.com> Date: Sat, 7 Sep 2024 21:21:52 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AE=B9=E5=99=A8=E5=86=85?= =?UTF-8?q?=E9=83=A8=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/muyu/access/data/Main.java | 4 +- .../access/data/base/BaseDataAbsSource.java | 4 +- .../access/data/base/BaseQueryHandler.java | 5 +- .../access/data/mysql/MySqlDataSource.java | 8 +- .../access/data/redis/RedisDataSource.java | 6 +- .../main/java/com/muyu/basic/BasicEngine.java | 2 +- .../abstracts/DataEngineRowActuator.java | 4 +- .../abstracts/DataEngineValueActuator.java | 6 +- .../muyu/basic/handler/DataEngineHandler.java | 2 +- .../basic/handler/DataEngineRowHandler.java | 4 +- .../basic/handler/DataEngineValueHandler.java | 10 +- .../java/com/muyu/core/enums/DataType.java | 2 +- .../java/com/muyu/core/utils/Convert.java | 148 ++++++------------ .../com/muyu/req/EngineVersionListResp.java | 3 +- .../main/java/com/muyu/EngineApplication.java | 2 +- .../controller/EngineVersionController.java | 2 +- .../muyu/controller/SourceDataController.java | 18 +-- .../src/main/java/com/muyu/domain/Datas.java | 2 +- .../main/java/com/muyu/domain/TableInfo.java | 81 +++++----- .../java/com/muyu/domain/TableInfoResp.java | 8 +- .../muyu/javacomplier/JavaCompilerDemo.java | 3 +- .../muyu/javacomplier/JavaStringCompiler.java | 87 +++++----- .../muyu/javacomplier/MemoryClassLoader.java | 30 ++-- .../javacomplier/MemoryJavaFileManager.java | 112 ++++++------- .../com/muyu/javacomplier/OssDownload.java | 4 +- .../serviceImpl/EngIneServiceImpl.java | 3 +- .../serviceImpl/EngineLevelServiceImpl.java | 2 +- .../serviceImpl/TableInfoServiceImpl.java | 1 + .../main/java/com/muyu/test/JavaClass.java | 2 +- .../main/java/com/muyu/test/TestService.java | 4 +- 30 files changed, 268 insertions(+), 301 deletions(-) diff --git a/cloud-etl-common/src/main/java/com/muyu/access/data/Main.java b/cloud-etl-common/src/main/java/com/muyu/access/data/Main.java index 74dd96c..5201dd1 100644 --- a/cloud-etl-common/src/main/java/com/muyu/access/data/Main.java +++ b/cloud-etl-common/src/main/java/com/muyu/access/data/Main.java @@ -15,13 +15,13 @@ import java.util.HashMap; */ public class Main { - public static void main (String[] args) { + public static void main(String[] args) { BaseDataSource mySqlDataSource = new MySqlDataSource(); MySqlQuery mySqlQuery = new MySqlQuery(); mySqlQuery.setDataSourceId("1"); mySqlQuery.setSql("select age as 库.表.字段 from abc where name = :name"); mySqlQuery.setParams( - new HashMap<>(){{ + new HashMap<>() {{ put("name", "张三"); }} ); diff --git a/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseDataAbsSource.java b/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseDataAbsSource.java index 15fdcba..540a5c0 100644 --- a/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseDataAbsSource.java +++ b/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseDataAbsSource.java @@ -3,11 +3,11 @@ package com.muyu.access.data.base; public abstract class BaseDataAbsSource implements BaseDataSource { - public void setQuery(BaseQuery baseQuery){ + public void setQuery(BaseQuery baseQuery) { BaseQueryHandler.set(baseQuery); } - public T getQuery(){ + public T getQuery() { return BaseQueryHandler.get(); } } diff --git a/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseQueryHandler.java b/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseQueryHandler.java index 0ab820d..4b2d991 100644 --- a/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseQueryHandler.java +++ b/cloud-etl-common/src/main/java/com/muyu/access/data/base/BaseQueryHandler.java @@ -1,4 +1,5 @@ package com.muyu.access.data.base; + /** * @Author: DongZeLiang * @date: 2024/8/28 @@ -9,11 +10,11 @@ public class BaseQueryHandler { private static final ThreadLocal BASE_QUERY_THREAD_LOCAL = new ThreadLocal<>(); - public static void set(BaseQuery baseQuery){ + public static void set(BaseQuery baseQuery) { BASE_QUERY_THREAD_LOCAL.set(baseQuery); } - public static T get(){ + public static T get() { return (T) BASE_QUERY_THREAD_LOCAL.get(); } diff --git a/cloud-etl-common/src/main/java/com/muyu/access/data/mysql/MySqlDataSource.java b/cloud-etl-common/src/main/java/com/muyu/access/data/mysql/MySqlDataSource.java index 5b093f2..0d4f6c9 100644 --- a/cloud-etl-common/src/main/java/com/muyu/access/data/mysql/MySqlDataSource.java +++ b/cloud-etl-common/src/main/java/com/muyu/access/data/mysql/MySqlDataSource.java @@ -20,7 +20,7 @@ import java.util.Map; public class MySqlDataSource extends BaseDataAbsSource { @Override - public DataValue getDataValue () { + public DataValue getDataValue() { MySqlQuery query = getQuery(); String dataSourceId = query.getDataSourceId(); Connection connection = null; @@ -32,7 +32,7 @@ public class MySqlDataSource extends BaseDataAbsSource { try { PreparedStatement preparedStatement = connection.prepareStatement(sql); ResultSet resultSet = preparedStatement.getResultSet(); - if(resultSet.next()){ + if (resultSet.next()) { DataValue.builder() .key(resultSet.getCursorName()) .label("") @@ -47,12 +47,12 @@ public class MySqlDataSource extends BaseDataAbsSource { } @Override - public DataValue[] getRow () { + public DataValue[] getRow() { return new DataValue[0]; } @Override - public DataValue[][] getRows () { + public DataValue[][] getRows() { return new DataValue[0][]; } } diff --git a/cloud-etl-common/src/main/java/com/muyu/access/data/redis/RedisDataSource.java b/cloud-etl-common/src/main/java/com/muyu/access/data/redis/RedisDataSource.java index 945aebb..4287395 100644 --- a/cloud-etl-common/src/main/java/com/muyu/access/data/redis/RedisDataSource.java +++ b/cloud-etl-common/src/main/java/com/muyu/access/data/redis/RedisDataSource.java @@ -12,17 +12,17 @@ import com.muyu.access.data.base.DataValue; */ public class RedisDataSource extends BaseDataAbsSource { @Override - public DataValue getDataValue () { + public DataValue getDataValue() { return null; } @Override - public DataValue[] getRow () { + public DataValue[] getRow() { return new DataValue[0]; } @Override - public DataValue[][] getRows () { + public DataValue[][] getRows() { return new DataValue[0][]; } } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/BasicEngine.java b/cloud-etl-common/src/main/java/com/muyu/basic/BasicEngine.java index 968f329..aab8c9f 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/BasicEngine.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/BasicEngine.java @@ -15,7 +15,7 @@ public interface BasicEngine { public V get(); - public default void remove(){ + public default void remove() { DataEngineHandler.remove(); } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineRowActuator.java b/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineRowActuator.java index 7841f53..c5fd7df 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineRowActuator.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineRowActuator.java @@ -13,11 +13,11 @@ import com.muyu.core.domain.DataValue; public abstract class DataEngineRowActuator implements BasicEngine { - public void set(DataValue[] dataValue){ + public void set(DataValue[] dataValue) { DataEngineRowHandler.set(dataValue); } - public DataValue[] get(){ + public DataValue[] get() { return DataEngineRowHandler.get(); } } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineValueActuator.java b/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineValueActuator.java index a6cff2e..4d035a0 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineValueActuator.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/abstracts/DataEngineValueActuator.java @@ -12,16 +12,16 @@ import com.muyu.core.domain.DataValue; */ public abstract class DataEngineValueActuator implements BasicEngine { - public void set(DataValue dataValue){ + public void set(DataValue dataValue) { DataEngineValueHandler.set(dataValue); } - public DataValue get(){ + public DataValue get() { return DataEngineValueHandler.get(); } @Override - public void execution () { + public void execution() { this.run(); this.remove(); } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineHandler.java b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineHandler.java index 510adfd..2151b7a 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineHandler.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineHandler.java @@ -19,7 +19,7 @@ public class DataEngineHandler { return (T) dataEngineHandler.get(); } - public static void remove(){ + public static void remove() { dataEngineHandler.remove(); } } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineRowHandler.java b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineRowHandler.java index 3cd9a06..93af1c6 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineRowHandler.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineRowHandler.java @@ -11,11 +11,11 @@ import com.muyu.core.domain.DataValue; */ public class DataEngineRowHandler { - public static void set(DataValue[] dataValue){ + public static void set(DataValue[] dataValue) { DataEngineHandler.set(dataValue); } - public static DataValue[] get(){ + public static DataValue[] get() { return DataEngineHandler.get(); } diff --git a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineValueHandler.java b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineValueHandler.java index 0023892..2adaff1 100644 --- a/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineValueHandler.java +++ b/cloud-etl-common/src/main/java/com/muyu/basic/handler/DataEngineValueHandler.java @@ -11,23 +11,23 @@ import com.muyu.core.utils.Convert; */ public class DataEngineValueHandler { - public static void set(DataValue dataValue){ + public static void set(DataValue dataValue) { DataEngineHandler.set(dataValue); } - public static DataValue get(){ + public static DataValue get() { return DataEngineHandler.get(); } - public static void remove(){ + public static void remove() { DataEngineHandler.remove(); } - public static Object getValue(){ + public static Object getValue() { return get().getValue(); } - public static Integer getIntegerValue(){ + public static Integer getIntegerValue() { return Convert.toInt(getValue(), null); } } diff --git a/cloud-etl-common/src/main/java/com/muyu/core/enums/DataType.java b/cloud-etl-common/src/main/java/com/muyu/core/enums/DataType.java index 910e4c7..be2c3e8 100644 --- a/cloud-etl-common/src/main/java/com/muyu/core/enums/DataType.java +++ b/cloud-etl-common/src/main/java/com/muyu/core/enums/DataType.java @@ -14,7 +14,7 @@ public enum DataType { private final Class targetType; - DataType (String sourceType, Class targetType) { + DataType(String sourceType, Class targetType) { this.sourceType = sourceType; this.targetType = targetType; } diff --git a/cloud-etl-common/src/main/java/com/muyu/core/utils/Convert.java b/cloud-etl-common/src/main/java/com/muyu/core/utils/Convert.java index fd615fb..bfa4d9b 100644 --- a/cloud-etl-common/src/main/java/com/muyu/core/utils/Convert.java +++ b/cloud-etl-common/src/main/java/com/muyu/core/utils/Convert.java @@ -24,10 +24,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static String toStr (Object value, String defaultValue) { + public static String toStr(Object value, String defaultValue) { if (null == value) { return defaultValue; } @@ -43,10 +42,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static String toStr (Object value) { + public static String toStr(Object value) { return toStr(value, null); } @@ -57,10 +55,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Character toChar (Object value, Character defaultValue) { + public static Character toChar(Object value, Character defaultValue) { if (null == value) { return defaultValue; } @@ -78,10 +75,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Character toChar (Object value) { + public static Character toChar(Object value) { return toChar(value, null); } @@ -92,10 +88,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Byte toByte (Object value, Byte defaultValue) { + public static Byte toByte(Object value, Byte defaultValue) { if (value == null) { return defaultValue; } @@ -122,10 +117,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Byte toByte (Object value) { + public static Byte toByte(Object value) { return toByte(value, null); } @@ -136,10 +130,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Short toShort (Object value, Short defaultValue) { + public static Short toShort(Object value, Short defaultValue) { if (value == null) { return defaultValue; } @@ -166,10 +159,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Short toShort (Object value) { + public static Short toShort(Object value) { return toShort(value, null); } @@ -180,10 +172,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Number toNumber (Object value, Number defaultValue) { + public static Number toNumber(Object value, Number defaultValue) { if (value == null) { return defaultValue; } @@ -207,10 +198,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Number toNumber (Object value) { + public static Number toNumber(Object value) { return toNumber(value, null); } @@ -221,10 +211,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Integer toInt (Object value, Integer defaultValue) { + public static Integer toInt(Object value, Integer defaultValue) { if (value == null) { return defaultValue; } @@ -251,10 +240,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Integer toInt (Object value) { + public static Integer toInt(Object value) { return toInt(value, null); } @@ -262,10 +250,9 @@ public class Convert { * 转换为Integer数组
* * @param str 被转换的值 - * * @return 结果 */ - public static Integer[] toIntArray (String str) { + public static Integer[] toIntArray(String str) { return toIntArray(",", str); } @@ -273,10 +260,9 @@ public class Convert { * 转换为Long数组
* * @param str 被转换的值 - * * @return 结果 */ - public static Long[] toLongArray (String str) { + public static Long[] toLongArray(String str) { return toLongArray(",", str); } @@ -285,16 +271,15 @@ public class Convert { * * @param split 分隔符 * @param str 被转换的值 - * * @return 结果 */ - public static Integer[] toIntArray (String split, String str) { + public static Integer[] toIntArray(String split, String str) { if (StringUtils.isEmpty(str)) { return new Integer[]{}; } String[] arr = str.split(split); final Integer[] ints = new Integer[arr.length]; - for (int i = 0 ; i < arr.length ; i++) { + for (int i = 0; i < arr.length; i++) { final Integer v = toInt(arr[i], 0); ints[i] = v; } @@ -306,16 +291,15 @@ public class Convert { * * @param split 分隔符 * @param str 被转换的值 - * * @return 结果 */ - public static Long[] toLongArray (String split, String str) { + public static Long[] toLongArray(String split, String str) { if (StringUtils.isEmpty(str)) { return new Long[]{}; } String[] arr = str.split(split); final Long[] longs = new Long[arr.length]; - for (int i = 0 ; i < arr.length ; i++) { + for (int i = 0; i < arr.length; i++) { final Long v = toLong(arr[i], null); longs[i] = v; } @@ -326,10 +310,9 @@ public class Convert { * 转换为String数组
* * @param str 被转换的值 - * * @return 结果 */ - public static String[] toStrArray (String str) { + public static String[] toStrArray(String str) { return toStrArray(",", str); } @@ -338,10 +321,9 @@ public class Convert { * * @param split 分隔符 * @param str 被转换的值 - * * @return 结果 */ - public static String[] toStrArray (String split, String str) { + public static String[] toStrArray(String split, String str) { return str.split(split); } @@ -352,10 +334,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Long toLong (Object value, Long defaultValue) { + public static Long toLong(Object value, Long defaultValue) { if (value == null) { return defaultValue; } @@ -383,10 +364,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Long toLong (Object value) { + public static Long toLong(Object value) { return toLong(value, null); } @@ -397,10 +377,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Double toDouble (Object value, Double defaultValue) { + public static Double toDouble(Object value, Double defaultValue) { if (value == null) { return defaultValue; } @@ -428,10 +407,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Double toDouble (Object value) { + public static Double toDouble(Object value) { return toDouble(value, null); } @@ -442,10 +420,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Float toFloat (Object value, Float defaultValue) { + public static Float toFloat(Object value, Float defaultValue) { if (value == null) { return defaultValue; } @@ -472,10 +449,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Float toFloat (Object value) { + public static Float toFloat(Object value) { return toFloat(value, null); } @@ -486,10 +462,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static Boolean toBool (Object value, Boolean defaultValue) { + public static Boolean toBool(Object value, Boolean defaultValue) { if (value == null) { return defaultValue; } @@ -522,10 +497,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static Boolean toBool (Object value) { + public static Boolean toBool(Object value) { return toBool(value, null); } @@ -536,10 +510,9 @@ public class Convert { * @param clazz Enum的Class * @param value 值 * @param defaultValue 默认值 - * * @return Enum */ - public static > E toEnum (Class clazz, Object value, E defaultValue) { + public static > E toEnum(Class clazz, Object value, E defaultValue) { if (value == null) { return defaultValue; } @@ -565,10 +538,9 @@ public class Convert { * * @param clazz Enum的Class * @param value 值 - * * @return Enum */ - public static > E toEnum (Class clazz, Object value) { + public static > E toEnum(Class clazz, Object value) { return toEnum(clazz, value, null); } @@ -579,10 +551,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static BigInteger toBigInteger (Object value, BigInteger defaultValue) { + public static BigInteger toBigInteger(Object value, BigInteger defaultValue) { if (value == null) { return defaultValue; } @@ -609,10 +580,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static BigInteger toBigInteger (Object value) { + public static BigInteger toBigInteger(Object value) { return toBigInteger(value, null); } @@ -623,10 +593,9 @@ public class Convert { * * @param value 被转换的值 * @param defaultValue 转换错误时的默认值 - * * @return 结果 */ - public static BigDecimal toBigDecimal (Object value, BigDecimal defaultValue) { + public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) { if (value == null) { return defaultValue; } @@ -659,10 +628,9 @@ public class Convert { * 转换失败不会报错 * * @param value 被转换的值 - * * @return 结果 */ - public static BigDecimal toBigDecimal (Object value) { + public static BigDecimal toBigDecimal(Object value) { return toBigDecimal(value, null); } @@ -671,10 +639,9 @@ public class Convert { * 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法 * * @param obj 对象 - * * @return 字符串 */ - public static String utf8Str (Object obj) { + public static String utf8Str(Object obj) { return str(obj, "UTF-8"); } @@ -684,10 +651,9 @@ public class Convert { * * @param obj 对象 * @param charsetName 字符集 - * * @return 字符串 */ - public static String str (Object obj, String charsetName) { + public static String str(Object obj, String charsetName) { return str(obj, Charset.forName(charsetName)); } @@ -697,10 +663,9 @@ public class Convert { * * @param obj 对象 * @param charset 字符集 - * * @return 字符串 */ - public static String str (Object obj, Charset charset) { + public static String str(Object obj, Charset charset) { if (null == obj) { return null; } @@ -714,7 +679,7 @@ public class Convert { Byte[] bytes = (Byte[]) obj; int length = bytes.length; byte[] dest = new byte[length]; - for (int i = 0 ; i < length ; i++) { + for (int i = 0; i < length; i++) { dest[i] = bytes[i]; } return str(dest, charset); @@ -730,10 +695,9 @@ public class Convert { * * @param bytes byte数组 * @param charset 字符集 - * * @return 字符串 */ - public static String str (byte[] bytes, String charset) { + public static String str(byte[] bytes, String charset) { return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset)); } @@ -742,10 +706,9 @@ public class Convert { * * @param data 字符串 * @param charset 字符集,如果此字段为空,则解码的结果取决于平台 - * * @return 解码后的字符串 */ - public static String str (byte[] data, Charset charset) { + public static String str(byte[] data, Charset charset) { if (data == null) { return null; } @@ -761,10 +724,9 @@ public class Convert { * * @param data 数据 * @param charset 字符集,如果为空使用当前系统字符集 - * * @return 字符串 */ - public static String str (ByteBuffer data, String charset) { + public static String str(ByteBuffer data, String charset) { if (data == null) { return null; } @@ -777,10 +739,9 @@ public class Convert { * * @param data 数据 * @param charset 字符集,如果为空使用当前系统字符集 - * * @return 字符串 */ - public static String str (ByteBuffer data, Charset charset) { + public static String str(ByteBuffer data, Charset charset) { if (null == charset) { charset = Charset.defaultCharset(); } @@ -793,10 +754,9 @@ public class Convert { * 半角转全角 * * @param input String. - * * @return 全角字符串. */ - public static String toSBC (String input) { + public static String toSBC(String input) { return toSBC(input, null); } @@ -805,12 +765,11 @@ public class Convert { * * @param input String * @param notConvertSet 不替换的字符集合 - * * @return 全角字符串. */ - public static String toSBC (String input, Set notConvertSet) { + public static String toSBC(String input, Set notConvertSet) { char[] c = input.toCharArray(); - for (int i = 0 ; i < c.length ; i++) { + for (int i = 0; i < c.length; i++) { if (null != notConvertSet && notConvertSet.contains(c[i])) { // 跳过不替换的字符 continue; @@ -830,10 +789,9 @@ public class Convert { * 全角转半角 * * @param input String. - * * @return 半角字符串 */ - public static String toDBC (String input) { + public static String toDBC(String input) { return toDBC(input, null); } @@ -842,12 +800,11 @@ public class Convert { * * @param text 文本 * @param notConvertSet 不替换的字符集合 - * * @return 替换后的字符 */ - public static String toDBC (String text, Set notConvertSet) { + public static String toDBC(String text, Set notConvertSet) { char[] c = text.toCharArray(); - for (int i = 0 ; i < c.length ; i++) { + for (int i = 0; i < c.length; i++) { if (null != notConvertSet && notConvertSet.contains(c[i])) { // 跳过不替换的字符 continue; @@ -866,10 +823,9 @@ public class Convert { * 数字金额大写转换 先写个完整的然后将如零拾替换成零 * * @param n 数字 - * * @return 中文大写数字 */ - public static String digitUppercase (double n) { + public static String digitUppercase(double n) { String[] fraction = {"角", "分"}; String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"}; String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}}; @@ -878,7 +834,7 @@ public class Convert { n = Math.abs(n); String s = ""; - for (int i = 0 ; i < fraction.length ; i++) { + for (int i = 0; i < fraction.length; i++) { // 优化double计算精度丢失问题 BigDecimal nNum = new BigDecimal(n); BigDecimal decimal = new BigDecimal(10); @@ -891,9 +847,9 @@ public class Convert { } int integerPart = (int) Math.floor(n); - for (int i = 0 ; i < unit[0].length && integerPart > 0 ; i++) { + for (int i = 0; i < unit[0].length && integerPart > 0; i++) { String p = ""; - for (int j = 0 ; j < unit[1].length && n > 0 ; j++) { + for (int j = 0; j < unit[1].length && n > 0; j++) { p = digit[integerPart % 10] + unit[1][j] + p; integerPart = integerPart / 10; } diff --git a/cloud-etl-common/src/main/java/com/muyu/req/EngineVersionListResp.java b/cloud-etl-common/src/main/java/com/muyu/req/EngineVersionListResp.java index 80fedc8..8941d85 100644 --- a/cloud-etl-common/src/main/java/com/muyu/req/EngineVersionListResp.java +++ b/cloud-etl-common/src/main/java/com/muyu/req/EngineVersionListResp.java @@ -10,7 +10,8 @@ import lombok.experimental.SuperBuilder; import java.util.List; /** - * :qdm + * :qdm + * * @Package:com.muyu.req * @Project:cloud-etl-engine * @name:EngineVersionListResp diff --git a/cloud-etl-server/src/main/java/com/muyu/EngineApplication.java b/cloud-etl-server/src/main/java/com/muyu/EngineApplication.java index 0cffe45..965c108 100644 --- a/cloud-etl-server/src/main/java/com/muyu/EngineApplication.java +++ b/cloud-etl-server/src/main/java/com/muyu/EngineApplication.java @@ -5,7 +5,7 @@ import com.muyu.common.security.annotation.EnableMyFeignClients; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; - + @EnableCustomConfig @EnableMyFeignClients @SpringBootApplication diff --git a/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java b/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java index de3ef7f..516d1b4 100644 --- a/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java +++ b/cloud-etl-server/src/main/java/com/muyu/controller/EngineVersionController.java @@ -180,7 +180,7 @@ public class EngineVersionController extends BaseController { */ @PostMapping("/insertVersion") public boolean insertVersion(@RequestBody EngineVersion engineVersion) { - log.info("数据是:{}"+engineVersion.getRuleContent()); + log.info("数据是:{}" + engineVersion.getRuleContent()); OssUpload.uploadFiles(engineVersion.getRuleContent(), engineVersion.getVersionCode()); OSSFileDownload.streamingDownload(engineVersion.getName()); JavaClass.compile(engineVersion.getName()); diff --git a/cloud-etl-server/src/main/java/com/muyu/controller/SourceDataController.java b/cloud-etl-server/src/main/java/com/muyu/controller/SourceDataController.java index 46c259d..904c5d1 100644 --- a/cloud-etl-server/src/main/java/com/muyu/controller/SourceDataController.java +++ b/cloud-etl-server/src/main/java/com/muyu/controller/SourceDataController.java @@ -63,15 +63,15 @@ public class SourceDataController extends BaseController { // return Result.success(tableInfo); // } - @PostMapping("/selectDataBase") - public List selectDataBase(){ - List dataSources = tableInfoService.selectDataBase(); + @PostMapping("/selectDataBase") + public List selectDataBase() { + List dataSources = tableInfoService.selectDataBase(); return dataSources; - } + } - @PostMapping("/selectData") - public List selectData(){ - List dataSources = tableInfoService.selectData(); - return dataSources; - } + @PostMapping("/selectData") + public List selectData() { + List dataSources = tableInfoService.selectData(); + return dataSources; + } } diff --git a/cloud-etl-server/src/main/java/com/muyu/domain/Datas.java b/cloud-etl-server/src/main/java/com/muyu/domain/Datas.java index f20c0aa..59e3f49 100644 --- a/cloud-etl-server/src/main/java/com/muyu/domain/Datas.java +++ b/cloud-etl-server/src/main/java/com/muyu/domain/Datas.java @@ -16,5 +16,5 @@ import lombok.NoArgsConstructor; @NoArgsConstructor public class Datas { private Integer id; - private String name; + private String name; } diff --git a/cloud-etl-server/src/main/java/com/muyu/domain/TableInfo.java b/cloud-etl-server/src/main/java/com/muyu/domain/TableInfo.java index ef98535..acbc5aa 100644 --- a/cloud-etl-server/src/main/java/com/muyu/domain/TableInfo.java +++ b/cloud-etl-server/src/main/java/com/muyu/domain/TableInfo.java @@ -16,53 +16,64 @@ import lombok.experimental.SuperBuilder; @AllArgsConstructor @SuperBuilder @EqualsAndHashCode(callSuper = true) -@TableName(value ="table_info") //数据库表相关 +@TableName(value = "table_info") //数据库表相关 public class TableInfo extends BaseEntity { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** 主键 */ - @TableId(value = "id", type = IdType.AUTO) - private Long id; + /** + * 主键 + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; - //数据源主键 - private Long basicId; + //数据源主键 + private Long basicId; - /** 表名称/数据库 */ - @Excel(name = "表名称/数据库") - private String tableName; + /** + * 表名称/数据库 + */ + @Excel(name = "表名称/数据库") + private String tableName; - /** 表备注 */ - @Excel(name = "表备注") - private String tableRemark; + /** + * 表备注 + */ + @Excel(name = "表备注") + private String tableRemark; - /** 表的数据来源 */ - @Excel(name = "数据来源类型") - private String type; + /** + * 表的数据来源 + */ + @Excel(name = "数据来源类型") + private String type; - /** 数据量 */ - @Excel(name = "数据量") - private Long dataNum; + /** + * 数据量 + */ + @Excel(name = "数据量") + private Long dataNum; - /** 是否核心 'Y'是 'N'不是 */ - @Excel(name = "是否核心 'Y'是 'N'不是") - private String center; + /** + * 是否核心 'Y'是 'N'不是 + */ + @Excel(name = "是否核心 'Y'是 'N'不是") + private String center; - private Long parentId; + private Long parentId; - - public static TableInfoResp toTableInfoResp(TableInfo tableInfo) { - return TableInfoResp.builder() - .id(tableInfo.id) - .parentId(tableInfo.parentId) - .basicId(tableInfo.basicId) - .tableName(tableInfo.tableName) - .tableRemark(tableInfo.tableRemark) - .isCenter(tableInfo.center) - .dataNum(tableInfo.dataNum) - .build(); - } + public static TableInfoResp toTableInfoResp(TableInfo tableInfo) { + return TableInfoResp.builder() + .id(tableInfo.id) + .parentId(tableInfo.parentId) + .basicId(tableInfo.basicId) + .tableName(tableInfo.tableName) + .tableRemark(tableInfo.tableRemark) + .isCenter(tableInfo.center) + .dataNum(tableInfo.dataNum) + .build(); + } } diff --git a/cloud-etl-server/src/main/java/com/muyu/domain/TableInfoResp.java b/cloud-etl-server/src/main/java/com/muyu/domain/TableInfoResp.java index 22a30ec..707a294 100644 --- a/cloud-etl-server/src/main/java/com/muyu/domain/TableInfoResp.java +++ b/cloud-etl-server/src/main/java/com/muyu/domain/TableInfoResp.java @@ -32,10 +32,14 @@ public class TableInfoResp { */ private String tableRemark; - /** 数据量 */ + /** + * 数据量 + */ private Long dataNum; - /** 是否核心 'Y'是 'N'不是 */ + /** + * 是否核心 'Y'是 'N'不是 + */ private String isCenter; //父级ID diff --git a/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaCompilerDemo.java b/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaCompilerDemo.java index 3861201..818bf7b 100644 --- a/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaCompilerDemo.java +++ b/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaCompilerDemo.java @@ -6,6 +6,7 @@ import javax.tools.*; import java.io.FileWriter; import java.io.IOException; import java.util.Arrays; + @Log4j2 public class JavaCompilerDemo { @@ -26,7 +27,7 @@ public class JavaCompilerDemo { // 执行编译 JavaCompiler.CompilationTask task = compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits); - log.info("数据是:{}"+task); + log.info("数据是:{}" + task); boolean success = task.call(); // 处理编译结果 diff --git a/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaStringCompiler.java b/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaStringCompiler.java index 03e30d1..09f3a7c 100644 --- a/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaStringCompiler.java +++ b/cloud-etl-server/src/main/java/com/muyu/javacomplier/JavaStringCompiler.java @@ -19,54 +19,47 @@ import javax.tools.JavaCompiler.CompilationTask; */ public class JavaStringCompiler { - JavaCompiler compiler; - StandardJavaFileManager stdManager; + JavaCompiler compiler; + StandardJavaFileManager stdManager; - public JavaStringCompiler() { - this.compiler = ToolProvider.getSystemJavaCompiler(); - this.stdManager = compiler.getStandardFileManager(null, null, null); - } + public JavaStringCompiler() { + this.compiler = ToolProvider.getSystemJavaCompiler(); + this.stdManager = compiler.getStandardFileManager(null, null, null); + } - /** - * Compile a Java source file in memory. - * - * @param fileName - * Java file name, e.g. "Test.java" - * @param source - * The source code as String. - * @return The compiled results as Map that contains class name as key, - * class binary as value. - * @throws IOException - * If compile error. - */ - public Map compile(String fileName, String source) throws IOException { - try (MemoryJavaFileManager manager = new MemoryJavaFileManager(stdManager)) { - JavaFileObject javaFileObject = manager.makeStringSource(fileName, source); - CompilationTask task = compiler.getTask(null, manager, null, null, null, Arrays.asList(javaFileObject)); - Boolean result = task.call(); - if (result == null || !result.booleanValue()) { - throw new RuntimeException("Compilation failed."); - } - return manager.getClassBytes(); - } - } + /** + * Compile a Java source file in memory. + * + * @param fileName Java file name, e.g. "Test.java" + * @param source The source code as String. + * @return The compiled results as Map that contains class name as key, + * class binary as value. + * @throws IOException If compile error. + */ + public Map compile(String fileName, String source) throws IOException { + try (MemoryJavaFileManager manager = new MemoryJavaFileManager(stdManager)) { + JavaFileObject javaFileObject = manager.makeStringSource(fileName, source); + CompilationTask task = compiler.getTask(null, manager, null, null, null, Arrays.asList(javaFileObject)); + Boolean result = task.call(); + if (result == null || !result.booleanValue()) { + throw new RuntimeException("Compilation failed."); + } + return manager.getClassBytes(); + } + } - /** - * Load class from compiled classes. - * - * @param name - * Full class name. - * @param classBytes - * Compiled results as a Map. - * @return The Class instance. - * @throws ClassNotFoundException - * If class not found. - * @throws IOException - * If load error. - */ - public Class loadClass(String name, Map classBytes) throws ClassNotFoundException, IOException { - try (DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader(classBytes)) { - return classLoader.loadClass(name); - } - } + /** + * Load class from compiled classes. + * + * @param name Full class name. + * @param classBytes Compiled results as a Map. + * @return The Class instance. + * @throws ClassNotFoundException If class not found. + * @throws IOException If load error. + */ + public Class loadClass(String name, Map classBytes) throws ClassNotFoundException, IOException { + try (DynamicLoader.MemoryClassLoader classLoader = new DynamicLoader.MemoryClassLoader(classBytes)) { + return classLoader.loadClass(name); + } + } } diff --git a/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryClassLoader.java b/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryClassLoader.java index 5ba63a0..cbbc237 100644 --- a/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryClassLoader.java +++ b/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryClassLoader.java @@ -12,22 +12,22 @@ import java.util.Map; */ class MemoryClassLoader extends URLClassLoader { - // class name to class bytes: - Map classBytes = new HashMap(); + // class name to class bytes: + Map classBytes = new HashMap(); - public MemoryClassLoader(Map classBytes) { - super(new URL[0], MemoryClassLoader.class.getClassLoader()); - this.classBytes.putAll(classBytes); - } + public MemoryClassLoader(Map classBytes) { + super(new URL[0], MemoryClassLoader.class.getClassLoader()); + this.classBytes.putAll(classBytes); + } - @Override - protected Class findClass(String name) throws ClassNotFoundException { - byte[] buf = classBytes.get(name); - if (buf == null) { - return super.findClass(name); - } - classBytes.remove(name); - return defineClass(name, buf, 0, buf.length); - } + @Override + protected Class findClass(String name) throws ClassNotFoundException { + byte[] buf = classBytes.get(name); + if (buf == null) { + return super.findClass(name); + } + classBytes.remove(name); + return defineClass(name, buf, 0, buf.length); + } } diff --git a/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryJavaFileManager.java b/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryJavaFileManager.java index 6453afa..aa4cafa 100644 --- a/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryJavaFileManager.java +++ b/cloud-etl-server/src/main/java/com/muyu/javacomplier/MemoryJavaFileManager.java @@ -23,74 +23,74 @@ import javax.tools.SimpleJavaFileObject; */ public class MemoryJavaFileManager extends ForwardingJavaFileManager { - // compiled classes in bytes: - final Map classBytes = new HashMap(); + // compiled classes in bytes: + final Map classBytes = new HashMap(); - public MemoryJavaFileManager(JavaFileManager fileManager) { - super(fileManager); - } + public MemoryJavaFileManager(JavaFileManager fileManager) { + super(fileManager); + } - public Map getClassBytes() { - return new HashMap(this.classBytes); - } + public Map getClassBytes() { + return new HashMap(this.classBytes); + } - @Override - public void flush() throws IOException { - } + @Override + public void flush() throws IOException { + } - @Override - public void close() throws IOException { - classBytes.clear(); - } + @Override + public void close() throws IOException { + classBytes.clear(); + } - @Override - public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, Kind kind, - FileObject sibling) throws IOException { - if (kind == Kind.CLASS) { - return new MemoryOutputJavaFileObject(className); - } else { - return super.getJavaFileForOutput(location, className, kind, sibling); - } - } + @Override + public JavaFileObject getJavaFileForOutput(JavaFileManager.Location location, String className, Kind kind, + FileObject sibling) throws IOException { + if (kind == Kind.CLASS) { + return new MemoryOutputJavaFileObject(className); + } else { + return super.getJavaFileForOutput(location, className, kind, sibling); + } + } - public JavaFileObject makeStringSource(String name, String code) { - return new MemoryInputJavaFileObject(name, code); - } + public JavaFileObject makeStringSource(String name, String code) { + return new MemoryInputJavaFileObject(name, code); + } - static class MemoryInputJavaFileObject extends SimpleJavaFileObject { + static class MemoryInputJavaFileObject extends SimpleJavaFileObject { - final String code; + final String code; - MemoryInputJavaFileObject(String name, String code) { - super(URI.create("string:///" + name), Kind.SOURCE); - this.code = code; - } + MemoryInputJavaFileObject(String name, String code) { + super(URI.create("string:///" + name), Kind.SOURCE); + this.code = code; + } - @Override - public CharBuffer getCharContent(boolean ignoreEncodingErrors) { - return CharBuffer.wrap(code); - } - } + @Override + public CharBuffer getCharContent(boolean ignoreEncodingErrors) { + return CharBuffer.wrap(code); + } + } - class MemoryOutputJavaFileObject extends SimpleJavaFileObject { - final String name; + class MemoryOutputJavaFileObject extends SimpleJavaFileObject { + final String name; - MemoryOutputJavaFileObject(String name) { - super(URI.create("string:///" + name), Kind.CLASS); - this.name = name; - } + MemoryOutputJavaFileObject(String name) { + super(URI.create("string:///" + name), Kind.CLASS); + this.name = name; + } - @Override - public OutputStream openOutputStream() { - return new FilterOutputStream(new ByteArrayOutputStream()) { - @Override - public void close() throws IOException { - out.close(); - ByteArrayOutputStream bos = (ByteArrayOutputStream) out; - classBytes.put(name, bos.toByteArray()); - } - }; - } + @Override + public OutputStream openOutputStream() { + return new FilterOutputStream(new ByteArrayOutputStream()) { + @Override + public void close() throws IOException { + out.close(); + ByteArrayOutputStream bos = (ByteArrayOutputStream) out; + classBytes.put(name, bos.toByteArray()); + } + }; + } - } + } } diff --git a/cloud-etl-server/src/main/java/com/muyu/javacomplier/OssDownload.java b/cloud-etl-server/src/main/java/com/muyu/javacomplier/OssDownload.java index 3b43a31..17e7478 100644 --- a/cloud-etl-server/src/main/java/com/muyu/javacomplier/OssDownload.java +++ b/cloud-etl-server/src/main/java/com/muyu/javacomplier/OssDownload.java @@ -32,13 +32,13 @@ public class OssDownload { return Result.error("bucket不存在"); } String objectName = fileName + ".java"; - Boolean flag_file = ossClient.doesObjectExist(bucketName, filePath+objectName); + Boolean flag_file = ossClient.doesObjectExist(bucketName, filePath + objectName); if (!flag_file) { System.out.println("预下载文件不存在"); return Result.error("预下载文件不存在"); } // 本地文件下载路径 - String localPath = "home/"+objectName; + String localPath = "home/" + objectName; ObjectMetadata object = ossClient.getObject(new GetObjectRequest(bucketName, filePath + objectName), new File(localPath)); System.out.println(object); ossClient.shutdown(); diff --git a/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/EngIneServiceImpl.java b/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/EngIneServiceImpl.java index d2db97b..cba6a6f 100644 --- a/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/EngIneServiceImpl.java +++ b/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/EngIneServiceImpl.java @@ -149,8 +149,7 @@ public class EngIneServiceImpl extends ServiceImpl implements EngineLevelService { +public class EngineLevelServiceImpl extends ServiceImpl implements EngineLevelService { @Autowired EnginLevelMapper enginLevelMapper; diff --git a/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/TableInfoServiceImpl.java b/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/TableInfoServiceImpl.java index dbb6683..54de1bd 100644 --- a/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/TableInfoServiceImpl.java +++ b/cloud-etl-server/src/main/java/com/muyu/service/serviceImpl/TableInfoServiceImpl.java @@ -1,4 +1,5 @@ package com.muyu.service.serviceImpl; + import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.domain.Datas; import com.muyu.domain.SourceData; diff --git a/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java b/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java index 393b943..2f89ba7 100644 --- a/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java +++ b/cloud-etl-server/src/main/java/com/muyu/test/JavaClass.java @@ -9,7 +9,7 @@ import javax.tools.ToolProvider; public class JavaClass { public static Result compile(String fileName) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); - String[] strings = {"-classpath", "/home/lib", "-verbose", "-d", "/home", "/home/"+fileName+".java"}; + String[] strings = {"-classpath", "/home/lib", "-verbose", "-d", "/home", "/home/" + fileName + ".java"}; int result = compiler.run(null, null, null, strings); if (result == 0) { System.out.println("编译成功,生成的.class文件位于源代码同目录"); diff --git a/cloud-etl-server/src/main/java/com/muyu/test/TestService.java b/cloud-etl-server/src/main/java/com/muyu/test/TestService.java index 3b9c054..94f4f34 100644 --- a/cloud-etl-server/src/main/java/com/muyu/test/TestService.java +++ b/cloud-etl-server/src/main/java/com/muyu/test/TestService.java @@ -74,7 +74,7 @@ public class TestService { OutputStream second = null; // 程序的输出 null 用 system.out OutputStream third = null; // 程序的错误输出 .,null 用 system.err // 程序编译参数 注意 我们编译目录是我们的项目目录 - String[] strings = {"-classpath", engineWorkSourcePath, "-verbose", "-d", engineWorkSourcePath, engineWorkSourcePath + engineVersion.getName()+".java"}; + String[] strings = {"-classpath", engineWorkSourcePath, "-verbose", "-d", engineWorkSourcePath, engineWorkSourcePath + engineVersion.getName() + ".java"}; // 0 表示成功, 其他表示出现了错误 System.out.println(Arrays.toString(strings)); int i = javaCompiler.run(first, second, third, strings); @@ -87,7 +87,7 @@ public class TestService { // 假设这是你的外部类文件路径 String externalClassFilePath = - engineWorkSourcePath + "\\com\\muyu\\abstracts\\"+engineVersion.getName()+".class"; + engineWorkSourcePath + "\\com\\muyu\\abstracts\\" + engineVersion.getName() + ".class"; Path classFilePath = Paths.get(externalClassFilePath); // 获取外部类所在的目录 String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('\\'));