@@ -152,11 +152,11 @@ public static void setStreamTimeCharacteristic(StreamExecutionEnvironment env, P
152152 * TABLE|SCALA
153153 * 注册UDF到table env
154154 */
155- public static void registerUDF (String type , String classPath , String funcName , TableEnvironment tableEnv , List < URL > jarURList ){
155+ public static void registerUDF (String type , String classPath , String funcName , TableEnvironment tableEnv , ClassLoader classLoader ){
156156 if ("SCALA" .equalsIgnoreCase (type )){
157- registerScalaUDF (classPath , funcName , tableEnv , jarURList );
157+ registerScalaUDF (classPath , funcName , tableEnv , classLoader );
158158 }else if ("TABLE" .equalsIgnoreCase (type )){
159- registerTableUDF (classPath , funcName , tableEnv , jarURList );
159+ registerTableUDF (classPath , funcName , tableEnv , classLoader );
160160 }else {
161161 throw new RuntimeException ("not support of UDF which is not in (TABLE, SCALA)" );
162162 }
@@ -169,9 +169,10 @@ public static void registerUDF(String type, String classPath, String funcName, T
169169 * @param funcName
170170 * @param tableEnv
171171 */
172- public static void registerScalaUDF (String classPath , String funcName , TableEnvironment tableEnv , List < URL > jarURList ){
172+ public static void registerScalaUDF (String classPath , String funcName , TableEnvironment tableEnv , ClassLoader classLoader ){
173173 try {
174- ScalarFunction udfFunc = ClassLoaderManager .newInstance (jarURList , (cl ) -> cl .loadClass (classPath ).asSubclass (ScalarFunction .class ).newInstance ());
174+ ScalarFunction udfFunc = Class .forName (classPath , false , classLoader )
175+ .asSubclass (ScalarFunction .class ).newInstance ();
175176 tableEnv .registerFunction (funcName , udfFunc );
176177 logger .info ("register scala function:{} success." , funcName );
177178 }catch (Exception e ){
@@ -187,9 +188,10 @@ public static void registerScalaUDF(String classPath, String funcName, TableEnvi
187188 * @param funcName
188189 * @param tableEnv
189190 */
190- public static void registerTableUDF (String classPath , String funcName , TableEnvironment tableEnv , List < URL > jarURList ){
191+ public static void registerTableUDF (String classPath , String funcName , TableEnvironment tableEnv , ClassLoader classLoader ){
191192 try {
192- TableFunction udfFunc = ClassLoaderManager .newInstance (jarURList , (cl ) -> cl .loadClass (classPath ).asSubclass (TableFunction .class ).newInstance ());
193+ ScalarFunction udfFunc = Class .forName (classPath , false , classLoader )
194+ .asSubclass (ScalarFunction .class ).newInstance ();
193195 if (tableEnv instanceof StreamTableEnvironment ){
194196 ((StreamTableEnvironment )tableEnv ).registerFunction (funcName , udfFunc );
195197 }else if (tableEnv instanceof BatchTableEnvironment ){
0 commit comments