Browse Source

REPORT-13402 【阻塞】【10.0.2回归】公式面板点不开

bugfix/10.0
plough 6 years ago
parent
commit
cee61dfe26
  1. 17
      designer-base/src/main/java/com/fr/design/formula/FunctionConstants.java

17
designer-base/src/main/java/com/fr/design/formula/FunctionConstants.java

@ -13,6 +13,7 @@ import com.fr.function.SUM;
import com.fr.function.TIME; import com.fr.function.TIME;
import com.fr.general.ComparatorUtils; import com.fr.general.ComparatorUtils;
import com.fr.general.GeneralUtils;
import com.fr.log.FineLoggerFactory; import com.fr.log.FineLoggerFactory;
import com.fr.plugin.ExtraClassManager; import com.fr.plugin.ExtraClassManager;
import com.fr.stable.EncodeConstants; import com.fr.stable.EncodeConstants;
@ -66,7 +67,6 @@ public final class FunctionConstants {
while (urlEnumeration.hasMoreElements()) { while (urlEnumeration.hasMoreElements()) {
URL url = urlEnumeration.nextElement(); URL url = urlEnumeration.nextElement();
String classFilePath = url.getFile(); String classFilePath = url.getFile();
/* /*
* alex:url.getFile获取的地址中,如果有空格或中文会被URLEncoder.encode处理 * alex:url.getFile获取的地址中,如果有空格或中文会被URLEncoder.encode处理
* 会变成%20这种%打头的东西,但是new File的时候%20是无法解析成空格,所以在此需要做URLDecoder.decode处理 * 会变成%20这种%打头的东西,但是new File的时候%20是无法解析成空格,所以在此需要做URLDecoder.decode处理
@ -77,10 +77,9 @@ public final class FunctionConstants {
FRContext.getLogger().error(e1.getMessage(), e1); FRContext.getLogger().error(e1.getMessage(), e1);
} }
FRContext.getLogger().info("ClassFilePath:" + classFilePath); FRContext.getLogger().info("ClassFilePath:" + classFilePath);
/* if (isCustomFormulaPath(classFilePath)) {
* alex:如果是jar包中的class文件 continue;
* file:/D:/opt/FineReport6.5/WebReport/WEB-INF/lib/fr-server-6.5.jar!/com/fr/rpt/script/function }
*/
for (String fileName : findClassNamesUnderFilePath(classFilePath)) { for (String fileName : findClassNamesUnderFilePath(classFilePath)) {
try { try {
Class<?> cls = Class.forName(pkgName + "." + fileName.substring(0, fileName.length() - 6)); Class<?> cls = Class.forName(pkgName + "." + fileName.substring(0, fileName.length() - 6));
@ -94,11 +93,19 @@ public final class FunctionConstants {
} }
} }
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException ignore) { } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ignore) {
} catch (Throwable e) {
// 不要因为个别公式加载失败,而导致整个函数面板无法启动
FineLoggerFactory.getLogger().error(e.getMessage());
} }
} }
} }
} }
private static boolean isCustomFormulaPath(String classFilePath) {
// 除非是代码启动,否则不读取 WEB-INF/classes/com/fr/function 目录下的类
return !classFilePath.contains("!/") && GeneralUtils.readBuildNO().contains("-");
}
/** /**
* 将函数分组插件中的函数添加到对应的列表中 * 将函数分组插件中的函数添加到对应的列表中
* @param listModel * @param listModel

Loading…
Cancel
Save