From a69651447c180136a12144b789c13b685ea0e1ab Mon Sep 17 00:00:00 2001 From: suisui Date: Sun, 5 Sep 2021 22:58:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E8=B7=AF=E5=BE=84=E6=96=87=E4=BB=B6=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 +- pom.xml | 72 +++++++++++-------- .../config/FXPlusApplication.java | 20 +++--- .../biubiusuisui/entity/FXBaseController.java | 5 +- .../scau/biubiusuisui/log/IFXPlusLogger.java | 2 - .../scau/biubiusuisui/utils/ClassUtil.java | 16 ++++- .../edu/scau/biubiusuisui/utils/FileUtil.java | 3 +- .../biubiusuisui/utils/IFxPlusConstants.java | 14 ++++ .../scau/biubiusuisui/utils/StringUtil.java | 20 +++--- src/main/resources/log4j.properties | 4 +- 10 files changed, 100 insertions(+), 59 deletions(-) create mode 100644 src/main/java/cn/edu/scau/biubiusuisui/utils/IFxPlusConstants.java diff --git a/.gitignore b/.gitignore index 723ef36..29b636a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -.idea \ No newline at end of file +.idea +*.iml \ No newline at end of file diff --git a/pom.xml b/pom.xml index 541a3ef..4cd88bd 100644 --- a/pom.xml +++ b/pom.xml @@ -19,6 +19,49 @@ this is javafx framework that simplified coding + + 3.1 + 4.13.1 + 1.7.21 + 9.0.48 + 3.12.0 + + + + + cglib + cglib + ${cglib.version} + + + + + junit + junit + ${junit.version} + test + + + + + org.slf4j + slf4j-log4j12 + ${slf4j-log4j12.version} + + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + javafx-plus @@ -30,35 +73,6 @@ - - - - cglib - cglib - 3.1 - - - - - junit - junit - 4.11 - test - - - - - org.slf4j - slf4j-log4j12 - 1.7.21 - - - org.apache.tomcat.embed - tomcat-embed-core - 9.0.29 - - - diff --git a/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java b/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java index 94a2b36..114e488 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/config/FXPlusApplication.java @@ -12,6 +12,7 @@ import cn.edu.scau.biubiusuisui.utils.ClassUtil; import cn.edu.scau.biubiusuisui.utils.FileUtil; import cn.edu.scau.biubiusuisui.utils.LogUtil; +import java.io.UnsupportedEncodingException; import java.lang.annotation.Annotation; import java.util.HashSet; import java.util.List; @@ -25,7 +26,6 @@ import java.util.Set; */ public class FXPlusApplication { private static final IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(FXPlusApplication.class); -// Application private static FXWindowParser windowAnnotationParser = new FXWindowParser(); @@ -37,7 +37,11 @@ public class FXPlusApplication { public static void start(Class clazz, BeanBuilder beanBuilder) { logger.info("starting JavaFX-Plus Application"); - logger.info("\n" + FileUtil.readFileFromResources("banner.txt")); + try { + logger.info("\n" + FileUtil.readFileFromResources("banner.txt")); + } catch (UnsupportedEncodingException e) { + logger.error("\n read classpath:banner.txt error, you can ignore it"); + } // 初始化日志路径 LogUtil.initLog4jBase(); @@ -56,15 +60,15 @@ public class FXPlusApplication { for (String dir : sets) { logger.info("scanning directory: " + dir); ClassUtil classUtil = new ClassUtil(); - List temps = classUtil.scanAllClassName(dir); - for (String className : temps) { - try { + List temps = null; + try { + temps = classUtil.scanAllClassName(dir); + for (String className : temps) { logger.info("loading class: " + className); loadFXPlusClass(className, beanBuilder); - } catch (ClassNotFoundException e) { - logger.error(e.getMessage()); - e.printStackTrace(); } + } catch (UnsupportedEncodingException | ClassNotFoundException exception) { + logger.error("{}", exception); } } } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java index 2513808..32bb44a 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/entity/FXBaseController.java @@ -18,6 +18,7 @@ import javafx.stage.Stage; import java.io.File; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.lang.annotation.Annotation; import java.net.URL; import java.util.HashMap; @@ -249,8 +250,8 @@ public class FXBaseController extends Pane { } else { logger.warn("the icon file has not existed"); } - } catch (ProtocolNotSupport protocolNotSupport) { - logger.error(protocolNotSupport.getMessage(), protocolNotSupport); + } catch (ProtocolNotSupport | UnsupportedEncodingException exception) { + logger.error(exception.getMessage(), exception); } } } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/log/IFXPlusLogger.java b/src/main/java/cn/edu/scau/biubiusuisui/log/IFXPlusLogger.java index 580b07e..7dc938a 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/log/IFXPlusLogger.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/log/IFXPlusLogger.java @@ -1,8 +1,6 @@ package cn.edu.scau.biubiusuisui.log; -import org.slf4j.Logger; - /** * @author suisui * @version 1.2 diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/ClassUtil.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/ClassUtil.java index 3cbf504..6381b7c 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/utils/ClassUtil.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/ClassUtil.java @@ -2,6 +2,7 @@ package cn.edu.scau.biubiusuisui.utils; import java.io.File; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.lang.annotation.Annotation; import java.lang.reflect.Field; import java.net.URL; @@ -22,7 +23,14 @@ public class ClassUtil { classLoader = getClass().getClassLoader(); } - private List getAllFXControllerClassName(String base, List nameList) { + /** + * 获取所有FxController的类名 + * + * @param base 基础目录路径 + * @param nameList 类名列表 + * @return 所有FXController的类名列表 + */ + private List getAllFXControllerClassName(String base, List nameList) throws UnsupportedEncodingException { String splashPath = StringUtil.dotToSplash(base); URL url = classLoader.getResource(splashPath); String filePath = StringUtil.getRootPath(url); @@ -42,7 +50,7 @@ public class ClassUtil { return nameList; } - public List scanAllClassName(String base) { + public List scanAllClassName(String base) throws UnsupportedEncodingException { return getAllFXControllerClassName(base, new LinkedList<>()); } @@ -62,7 +70,9 @@ public class ClassUtil { } private static List readFromDirectory(String path) { - if (path == null) return null; + if (path == null) { + return null; + } return readFromFileDirectory(path); } diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java index c4809b8..a5d9175 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/FileUtil.java @@ -6,6 +6,7 @@ import cn.edu.scau.biubiusuisui.log.IFXPlusLogger; import java.io.*; import java.net.URL; +import java.net.URLDecoder; /** * @author jack @@ -34,7 +35,7 @@ public class FileUtil { * @return * @description 读取resources文件夹下的file,相对于resources的文件路径,如 resources/config.conf 则只需 config.conf */ - public static String readFileFromResources(String filePath) { + public static String readFileFromResources(String filePath) throws UnsupportedEncodingException { URL url = FileUtil.class.getClassLoader().getResource(filePath); if (url != null) { String path = StringUtil.getRootPath(url); diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/IFxPlusConstants.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/IFxPlusConstants.java new file mode 100644 index 0000000..e2b4479 --- /dev/null +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/IFxPlusConstants.java @@ -0,0 +1,14 @@ +package cn.edu.scau.biubiusuisui.utils; + +/** + * @author suisui + * @version 1.2.0 + *

Description: JavaFx-Plus常量

+ * @time 2021/9/5 10:36 下午 + */ +public interface IFxPlusConstants { + /** + * 项目默认编码 UTF-8 + */ + String DEFAULT_CHARSET = "UTF-8"; +} diff --git a/src/main/java/cn/edu/scau/biubiusuisui/utils/StringUtil.java b/src/main/java/cn/edu/scau/biubiusuisui/utils/StringUtil.java index 5047fb0..e761866 100644 --- a/src/main/java/cn/edu/scau/biubiusuisui/utils/StringUtil.java +++ b/src/main/java/cn/edu/scau/biubiusuisui/utils/StringUtil.java @@ -2,8 +2,11 @@ package cn.edu.scau.biubiusuisui.utils; import cn.edu.scau.biubiusuisui.log.FXPlusLoggerFactory; import cn.edu.scau.biubiusuisui.log.IFXPlusLogger; +import org.apache.commons.lang3.StringUtils; +import java.io.UnsupportedEncodingException; import java.net.URL; +import java.net.URLDecoder; /** * @author jack @@ -11,20 +14,20 @@ import java.net.URL; * @version 1.0 * @date 2019/6/25 3:46 * @since JavaFX2.0 JDK1.8 + * @since 1.3.0 add:继承StringUtils */ -public class StringUtil { +public class StringUtil extends StringUtils { private static IFXPlusLogger logger = FXPlusLoggerFactory.getLogger(StringUtil.class); private StringUtil() { - } /** * "file:/home/whf/cn/fh" -> "/home/whf/cn/fh" * "jar:file:/home/whf/foo.jar!cn/fh" -> "/home/whf/foo.jar" */ - public static String getRootPath(URL url) { - String fileUrl = url.getFile(); + public static String getRootPath(URL url) throws UnsupportedEncodingException { + String fileUrl = URLDecoder.decode(url.getFile(),IFxPlusConstants.DEFAULT_CHARSET); int pos = fileUrl.indexOf('!'); if (-1 == pos) { @@ -51,7 +54,6 @@ public class StringUtil { * @return */ public static String splashToDot(String name) { - return name.replaceAll("/", "\\."); } @@ -63,7 +65,6 @@ public class StringUtil { if (-1 != pos) { return name.substring(0, pos); } - return name; } @@ -76,7 +77,6 @@ public class StringUtil { public static String trimURI(String uri) { String trimmed = uri.substring(1); int splashIndex = trimmed.indexOf('/'); - return trimmed.substring(splashIndex); } @@ -103,8 +103,7 @@ public class StringUtil { * @return */ public static String toInstanceName(String name) { - String result = name.substring(0, 1).toLowerCase().concat(name.substring(1)); - return result; + return name.substring(0, 1).toLowerCase().concat(name.substring(1)); } /** @@ -114,8 +113,7 @@ public class StringUtil { * @return */ public static String toClassName(String name) { - String result = name.substring(0, 1).toUpperCase().concat(name.substring(1)); - return result; + return name.substring(0, 1).toUpperCase().concat(name.substring(1)); } /** diff --git a/src/main/resources/log4j.properties b/src/main/resources/log4j.properties index 96000f0..fffd350 100644 --- a/src/main/resources/log4j.properties +++ b/src/main/resources/log4j.properties @@ -12,7 +12,7 @@ log4j.appender.D=org.apache.log4j.DailyRollingFileAppender # MacOS log4j.appender.D.File=${log.base}/logs/debug/javafxplus.log log4j.appender.D.Append=true -log4j.appender.D.Threshold=DEBUG +log4j.appender.D.Threshold=DEBUG log4j.appender.D.layout=org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern=[%p] %-d{yyyy-MM-dd HH:mm:ss} [%t] [%l] - %m%n ### 输出ERROR 级别以上的日志到=E://logs/error.log ### @@ -22,6 +22,6 @@ log4j.appender.E=org.apache.log4j.DailyRollingFileAppender # MacOS log4j.appender.E.File=${log.base}/logs/error/javafxplus.log log4j.appender.E.Append=true -log4j.appender.E.Threshold=ERROR +log4j.appender.E.Threshold=ERROR log4j.appender.E.layout=org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern=[%p] %-d{yyyy-MM-dd HH:mm:ss} [%t] [%l] - %m%n \ No newline at end of file