b0a1daacac1ce818f6184fa492273cfd8f359849..8f6f670f6947a2a605ca58e64bfcafee9926c389
2025-04-21 DELL
修改
8f6f67 对比 | 目录
2025-04-21 DELL
Merge branch 'master' of http://whyclj@118.89.139.230:10101/r/~whyclj/BattM...
7af191 对比 | 目录
2025-04-21 DELL
初次提交
b66175 对比 | 目录
61个文件已添加
2901 ■■■■■ 已修改文件
BattMonitor_ElectLock_ListenSystemForLinux/.classpath 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/.project 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/.settings/org.eclipse.core.resources.prefs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/.settings/org.eclipse.jdt.core.prefs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/ServerRestart.bat 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/base/Com.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/base/ComBase.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/config/AppConfig.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/del/TmpFileUtil$1.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/del/TmpFileUtil.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/ListenSystem_SQL.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/ListenSystem_Thread.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/Process_survey.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/MysqlConnPool.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/Sql_Mysql.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/SybaseConnPool.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/version_inf/version_inf.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/bin/main/main_FBS9100S_ListenSystem.class 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/config.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/error.log 533 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/info-20240719-1.log.gz 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/info.log 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/ftp/app_update/update.xml 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/ftp_server_ini.properties 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcData.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcDataInf.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcTestTime.java 102 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/aopalliance-1.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/c3p0-0.9.5.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/c3p0-oracle-thin-extras-0.9.5.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/dom4j-1.6.1.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/ftplet-api-1.0.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/ftpserver-core-1.0.6.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/jcl-over-slf4j-1.5.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/jconn3.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/jxl.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-1.2.14.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-api-2.15.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-core-2.15.0.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/mchange-commons-java-0.2.9.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/mina-core-2.0.4.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/mysql-connector-java-5.1.30-bin.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/slf4j-api-1.5.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/slf4j-log4j12-1.5.2.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-beans-2.5.5.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-context-2.5.5.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-core-2.5.5.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/lib/sqljdbc4.jar 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/log4j2_electlock_listensystem_x64.xml 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/base/Com.java 155 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/base/ComBase.java 171 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/config/AppConfig.java 205 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/del/TmpFileUtil.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/ListenSystem_SQL.java 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/ListenSystem_Thread.java 337 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/Process_survey.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/MysqlConnPool.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/Sql_Mysql.java 252 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/SybaseConnPool.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/com/version_inf/version_inf.txt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/src/main/main_FBS9100S_ListenSystem.java 131 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BattMonitor_ElectLock_ListenSystemForLinux/.classpath
New file
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
    <classpathentry kind="lib" path="lib/aopalliance-1.0.jar"/>
    <classpathentry kind="lib" path="lib/c3p0-0.9.5.jar"/>
    <classpathentry kind="lib" path="lib/c3p0-oracle-thin-extras-0.9.5.jar"/>
    <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
    <classpathentry kind="lib" path="lib/ftplet-api-1.0.6.jar"/>
    <classpathentry kind="lib" path="lib/ftpserver-core-1.0.6.jar"/>
    <classpathentry kind="lib" path="lib/jcl-over-slf4j-1.5.2.jar"/>
    <classpathentry kind="lib" path="lib/jconn3.jar"/>
    <classpathentry kind="lib" path="lib/jxl.jar"/>
    <classpathentry kind="lib" path="lib/log4j-1.2.14.jar"/>
    <classpathentry kind="lib" path="lib/mchange-commons-java-0.2.9.jar"/>
    <classpathentry kind="lib" path="lib/mina-core-2.0.4.jar"/>
    <classpathentry kind="lib" path="lib/mysql-connector-java-5.1.30-bin.jar"/>
    <classpathentry kind="lib" path="lib/slf4j-api-1.5.2.jar"/>
    <classpathentry kind="lib" path="lib/slf4j-log4j12-1.5.2.jar"/>
    <classpathentry kind="lib" path="lib/spring-beans-2.5.5.jar"/>
    <classpathentry kind="lib" path="lib/spring-context-2.5.5.jar"/>
    <classpathentry kind="lib" path="lib/spring-core-2.5.5.jar"/>
    <classpathentry kind="lib" path="lib/sqljdbc4.jar"/>
    <classpathentry kind="lib" path="lib/log4j-api-2.15.0.jar"/>
    <classpathentry kind="lib" path="lib/log4j-core-2.15.0.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>
BattMonitor_ElectLock_ListenSystemForLinux/.project
New file
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
    <name>BattMonitor_ElectLock_ListenSystemForLinux</name>
    <comment></comment>
    <projects>
    </projects>
    <buildSpec>
        <buildCommand>
            <name>org.eclipse.jdt.core.javabuilder</name>
            <arguments>
            </arguments>
        </buildCommand>
    </buildSpec>
    <natures>
        <nature>org.eclipse.jdt.core.javanature</nature>
    </natures>
</projectDescription>
BattMonitor_ElectLock_ListenSystemForLinux/.settings/org.eclipse.core.resources.prefs
New file
@@ -0,0 +1,3 @@
eclipse.preferences.version=1
encoding//src/main/main_FBS9100S_ListenSystem.java=GBK
encoding/<project>=GBK
BattMonitor_ElectLock_ListenSystemForLinux/.settings/org.eclipse.jdt.core.prefs
New file
@@ -0,0 +1,11 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.8
BattMonitor_ElectLock_ListenSystemForLinux/ServerRestart.bat
New file
@@ -0,0 +1,7 @@
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
cd /d "%~dp0"
net stop BMS_ELECT_LOCK_COMM
net start BMS_ELECT_LOCK_COMM
net stop BMS_ELECT_LOCK_ALARM
net start BMS_ELECT_LOCK_ALARM
exit
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/base/Com.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/base/ComBase.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/config/AppConfig.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/del/TmpFileUtil$1.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/del/TmpFileUtil.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/ListenSystem_SQL.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/ListenSystem_Thread.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/listen/Process_survey.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/MysqlConnPool.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/Sql_Mysql.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/sql/SybaseConnPool.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/bin/com/version_inf/version_inf.txt
New file
@@ -0,0 +1,14 @@
线程监控程序
    用于监测各个启用的程序是否正常运行,以及监听禁用的程序时候后台运行
V1.103    at 2023-04-15
    1.修复自身程序服务重启后及一直重启自身服务
    2.添加log4j日志打印配置
V1.102
    1.兼容Windows和Linux系统运行
V1.101
    初始版本
BattMonitor_ElectLock_ListenSystemForLinux/bin/main/main_FBS9100S_ListenSystem.class
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/config.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="gbk"?>
<root>
  <sql_server_ip>127.0.0.1</sql_server_ip>
  <sql_server_port>3382</sql_server_port>
  <sql_conncount_max>200</sql_conncount_max>
  <lockAcceptPort>9001</lockAcceptPort>
  <commType>IP</commType>
</root>
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/error.log
New file
@@ -0,0 +1,533 @@
2025-03-13 11:43:13.285 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.298 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.298 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.298 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.315 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.315 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6660.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6660.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.315 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-13 11:43:13.315 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:207) [bin/:?]
2025-03-18 10:00:11.031 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.046 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.046 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.046 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.046 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.046 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.077 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.077 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.077 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:00:11.077 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.983 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.994 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.995 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.995 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:01:05.996 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.742 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\adobegc.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.749 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\CreativeCloud\ACC\ACC.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud\ACC
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\CreativeCloud
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSAPIDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\FXSTIFFDebugLogFile.txt: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmauthd.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
java.nio.file.FileSystemException: C:\Windows\Temp\vmware-SYSTEM\vmware-usbarb-6452.log: 另一个程序正在使用此文件,进程无法访问。
    at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) ~[?:1.8.0_181]
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:51) [bin/:?]
    at com.del.TmpFileUtil$1.visitFile(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2670) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp\vmware-SYSTEM
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:08:02.750 [main] [ERROR] com.del.TmpFileUtil - java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
java.nio.file.DirectoryNotEmptyException: C:\Windows\Temp
    at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:266) ~[?:1.8.0_181]
    at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103) ~[?:1.8.0_181]
    at java.nio.file.Files.delete(Files.java:1126) ~[?:1.8.0_181]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:70) [bin/:?]
    at com.del.TmpFileUtil$1.postVisitDirectory(TmpFileUtil.java:1) [bin/:?]
    at java.nio.file.Files.walkFileTree(Files.java:2688) [?:1.8.0_181]
    at java.nio.file.Files.walkFileTree(Files.java:2742) [?:1.8.0_181]
    at com.del.TmpFileUtil.delTmpFile(TmpFileUtil.java:41) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:141) [bin/:?]
2025-03-18 10:18:27.986 [main] [ERROR] com.config.AppConfig - java.lang.NullPointerException
java.lang.NullPointerException: null
    at com.config.AppConfig.readConfigFromXml(AppConfig.java:117) [bin/:?]
    at com.config.AppConfig.<init>(AppConfig.java:52) [bin/:?]
    at main.main_FBS9100S_ListenSystem.main(main_FBS9100S_ListenSystem.java:64) [bin/:?]
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/info-20240719-1.log.gz
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/fbs9100s_listensystem_x64_logs/info.log
New file
@@ -0,0 +1,81 @@
2025-03-13 11:43:10.155 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-13 11:43:10.165 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-13 11:43:10.165 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-13 11:43:10.165 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505 app_for_fbs_free_only
2025-03-13 11:43:10.165 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-13 11:43:10
2025-03-13 11:43:10.165 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-13 11:43:10.195 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:127.0.0.1port3360
2025-03-13 11:43:11.055 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-13 11:43:11
2025-03-13 11:43:11.245 [main] [INFO] main.main_FBS9100S_ListenSystem - 获取数据库连接成功
2025-03-13 11:43:11.285 [Thread-5] [INFO] com.listen.ListenSystem_Thread - Thread-5 - ListenSystem_Thread Started at 2025-03-13 11:43:11
2025-03-18 09:47:50.176 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 09:47:50.179 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 09:47:50.179 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 09:47:50.179 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505 app_for_fbs_free_only
2025-03-18 09:47:50.180 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 09:47:50
2025-03-18 09:47:50.180 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 09:47:50.204 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:127.0.0.1port3360
2025-03-18 09:47:50.974 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 09:47:50
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505 app_for_fbs_free_only
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 09:57:15
2025-03-18 09:57:15.228 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 09:57:15.259 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:127.0.0.1port3360
2025-03-18 09:57:16.009 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 09:57:16
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505 app_for_fbs_free_only
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 09:57:40
2025-03-18 09:57:40.809 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 09:57:40.841 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:192.168.10.82port3360
2025-03-18 09:57:41.606 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 09:57:41
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 09:59:32
2025-03-18 09:59:32.400 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 09:59:32.431 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:192.168.10.82port5306
2025-03-18 09:59:33.228 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 09:59:33
2025-03-18 10:00:08.054 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 10:00:08.070 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 10:00:08.070 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 10:00:08.070 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505
2025-03-18 10:00:08.070 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 10:00:08
2025-03-18 10:00:08.070 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 10:00:08.086 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:192.168.10.82port3382
2025-03-18 10:00:08.835 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 10:00:08
2025-03-18 10:00:09.020 [main] [INFO] main.main_FBS9100S_ListenSystem - 获取数据库连接成功
2025-03-18 10:00:09.044 [Thread-5] [INFO] com.listen.ListenSystem_Thread - Thread-5 - ListenSystem_Thread Started at 2025-03-18 10:00:09
2025-03-18 10:01:02.985 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 10:01:03.000 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 10:01:03.000 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 10:01:03.000 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505
2025-03-18 10:01:03.000 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 10:01:03
2025-03-18 10:01:03.000 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 10:01:03.016 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:192.168.10.82port3382
2025-03-18 10:01:03.781 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 10:01:03
2025-03-18 10:01:03.968 [main] [INFO] main.main_FBS9100S_ListenSystem - 获取数据库连接成功
2025-03-18 10:01:03.983 [Thread-5] [INFO] com.listen.ListenSystem_Thread - Thread-5 - ListenSystem_Thread Started at 2025-03-18 10:01:03
2025-03-18 10:01:57.925 [Thread-5] [INFO] com.listen.ListenSystem_Thread - 重启2个服务:BMS_ELECT_LOCK_COMM,BMS_ELECT_LOCK_ALARM;停止0个服务:;2025-03-18 10:01:57
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 10:07:59
2025-03-18 10:07:59.749 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 10:07:59.781 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:192.168.10.82port3382
2025-03-18 10:08:00.546 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 10:08:00
2025-03-18 10:08:00.726 [main] [INFO] main.main_FBS9100S_ListenSystem - 获取数据库连接成功
2025-03-18 10:08:00.742 [Thread-5] [INFO] com.listen.ListenSystem_Thread - Thread-5 - ListenSystem_Thread Started at 2025-03-18 10:08:00
2025-03-18 10:18:27.964 [main] [INFO] main.main_FBS9100S_ListenSystem - /****************************************************************
2025-03-18 10:18:27.966 [main] [INFO] main.main_FBS9100S_ListenSystem - *****************************************************************
2025-03-18 10:18:27.966 [main] [INFO] main.main_FBS9100S_ListenSystem - ****************************************************************/
2025-03-18 10:18:27.966 [main] [INFO] main.main_FBS9100S_ListenSystem - Welcome To Use ListenSystem V1.103 RC_20170505
2025-03-18 10:18:27.968 [main] [INFO] main.main_FBS9100S_ListenSystem - ListenSystem Server Start At...2025-03-18 10:18:27
2025-03-18 10:18:27.968 [main] [INFO] main.main_FBS9100S_ListenSystem - Waiting For MySQL_FBSDEV Start ...
2025-03-18 10:18:27.986 [main] [INFO] main.main_FBS9100S_ListenSystem - IP:127.0.0.1port3382
2025-03-18 10:18:28.783 [main] [INFO] main.main_FBS9100S_ListenSystem - 开始监测2025-03-18 10:18:28
BattMonitor_ElectLock_ListenSystemForLinux/ftp/app_update/update.xml
New file
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="gbk"?>
<root>
  <app_name>update.upd</app_name>
  <app_version>1.01</app_version>
  <app_version_inf>
        1.原始版本。
        -r-
  </app_version_inf>
</root>
BattMonitor_ElectLock_ListenSystemForLinux/ftp_server_ini.properties
New file
@@ -0,0 +1,20 @@
#FTP_SERVER_INIT
#Sat Mar 12 12:32:51 CST 2016
ftpserver.user.admin.homedirectory=F\:\\java\\workspace\\Demo_BattMonitor\\
ftpserver.user.admin.maxloginperip=2
ftpserver.user.appusr.userpassword=1234
ftpserver.user.admin.enableflag=true
ftpserver.user.admin.idletime=300
ftpserver.user.admin.maxloginnumber=5
ftpserver.user.appusr.enableflag=true
ftpserver.user.appusr.maxloginnumber=300
ftpserver.user.admin.uploadrate=400000
ftpserver.user.admin.userpassword=admin
ftpserver.user.appusr.homedirectory=F\:\\java\\workspace\\Demo_BattMonitor\\ftp\\data_upload
ftpserver.user.appusr.maxloginperip=2
ftpserver.user.admin.downloadrate=400000
ftpserver.user.admin.writepermission=true
ftpserver.user.appusr.downloadrate=400000
ftpserver.user.appusr.uploadrate=400000
ftpserver.user.appusr.writepermission=true
ftpserver.user.appusr.idletime=300
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcData.java
New file
@@ -0,0 +1,159 @@
package com.data.idc;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.ArrayList;
import com.data.fbo.FboData;
import com.data.fbo.FboDataInf;
public class IdcData {
    public static final int Data400_Len = 1632;
    public static final int Data24_Len = 128;
    public static final int DataVer_YC = 0;
    public static final int DataVer_MR = 1;
    public int DataVersion = DataVer_YC;
    public int DataType;
    public IdcTestTime DateTime = new IdcTestTime();
    public float SumVol;
    public float SumCur;
    public float SumAH;
    public float[] MonomerVol = new float[400];
    public void setData(byte[] buf)
    {
        ByteBuffer bf = ByteBuffer.allocate(2048);
        bf.order(ByteOrder.LITTLE_ENDIAN);
        bf.put(buf);
        bf.position(0);
        DataVersion = DataVer_YC;
        DataType = (bf.getInt()&0xFFFF);
        DateTime.year = (int) (bf.getShort()&0xFFFF);
        DateTime.month = (int) (bf.getShort()&0xFFFF);
        DateTime.dayofweek = (int) (bf.getShort()&0xFFFF);
        DateTime.day = (int) (bf.getShort()&0xFFFF);
        DateTime.hour = (int) (bf.getShort()&0xFFFF);
        DateTime.minute = (int) (bf.getShort()&0xFFFF);
        DateTime.second = (int) (bf.getShort()&0xFFFF);
        DateTime.millsecond = (int) (bf.getShort()&0xFFFF);
        SumVol = bf.getFloat();
        SumCur = bf.getFloat();
        SumAH = bf.getFloat();
        for(int n=0; n<400; n++)
        {
            MonomerVol[n] = bf.getFloat();
            if(n > 30) {
                if(MonomerVol[n] > 0.1) {
                    DataVersion = DataVer_MR;
                }
            }
        }
    }
    public static void checkIdcFile(File file, FboDataInf data_inf, ArrayList<FboData> al_fbo_data)
    {
        File f = file;
        FileInputStream fis = null;
        try {
            fis = new FileInputStream(f);
            byte[] buf = new byte[1024];
            if(fis.read(buf, 0, buf.length) == 1024)
            {
                IdcDataInf idc_inf = new IdcDataInf();
                idc_inf.setDataInf(buf);
                data_inf.setDataInf(idc_inf);
                data_inf.DataType = 0xFD;
                int data_count = 0;
                int data_len = IdcData.Data400_Len;
                IdcData idc_data_begin = new IdcData();
                IdcData idc_data_tmp = new IdcData();
                byte[] databuf = new byte[IdcData.Data400_Len];
                FboData fbo_data = new FboData();
                if(fis.read(databuf, 0, data_len) == data_len)
                {
                    idc_data_tmp.setData(databuf);
                    if(IdcData.DataVer_MR == idc_data_tmp.DataVersion) {
                        data_len = IdcData.Data24_Len;
                    }
                }
                fis.skip(IdcData.Data400_Len * (-1));
                while(true)
                {
                    if(fis.read(databuf, 0, data_len) == data_len)
                    {
                        IdcData idc_data = new IdcData();
                        idc_data.setData(databuf);
                        if(0 == data_count) {
                            idc_data_begin = idc_data;
                            idc_data_tmp = idc_data;
                            if(0xCC == idc_data.DataType) {
                                data_inf.DataType = 0xFC;
                            }
                        }
                        idc_data.DataType = data_inf.DataType;
                        fbo_data = new FboData();
                        fbo_data.setData(idc_data);
                        fbo_data.m_TestTime = IdcTestTime.getFboTestTime(idc_data.DateTime, idc_data_begin.DateTime);
                        int second_count = (int) (idc_data.DateTime.getTimeInSecond() - idc_data_tmp.DateTime.getTimeInSecond());
                        if(second_count > 56) {
                            data_inf.SaveInterval = second_count / 60;
                            if((second_count % 60) > 0) {
                                data_inf.SaveInterval += 1;
                            }
                        }
                        float tmp_cap = (fbo_data.SubCurrent[0] * second_count) / 3600;
                        if(al_fbo_data.size() > 0) {
                            fbo_data.SubCap[0] = al_fbo_data.get(al_fbo_data.size()-1).SubCap[0] + tmp_cap;
                        } else {
                            fbo_data.SubCap[0] = tmp_cap;
                        }
                        fbo_data.AllCap = fbo_data.SubCap[0];
                        al_fbo_data.add(fbo_data);
                        idc_data_tmp = idc_data;
                        data_count += 1;
                    } else {
                        break;
                    }
                }
                data_inf.TestTimeLong.hour = fbo_data.m_TestTime.hour;
                data_inf.TestTimeLong.minute = fbo_data.m_TestTime.minute;
                data_inf.TestTimeLong.second = fbo_data.m_TestTime.second;
                data_inf.TestCur = fbo_data.SubCurrent[0];
                data_inf.TestCap = fbo_data.SubCap[0];
                data_inf.SMaxIndex[0] = fbo_data.getMaxIndex();
                data_inf.SMaxVol[0] = fbo_data.getMaxVol();
                data_inf.SMinIndex[0] = fbo_data.getMinIndex();
                data_inf.SMinVol[0] = fbo_data.getMinVol();
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if(null != fis)
            {
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcDataInf.java
New file
@@ -0,0 +1,128 @@
package com.data.idc;
import java.util.Date;
import com.Com;
public class IdcDataInf {
    public static final int DevType_Idc = 0x13;
    public int m_STDAH;            //标称容量。
    public int m_EachBattSum;        //电池个数。
    public int m_HourRate;           //小时率。
    public int m_BattGroup;
    public float m_MonomerVol;
    public float m_MonomerType;
    public float m_SumVolLL;
    public float m_MonomerVolLL;
    public int m_MonomerLLCount;
    public int m_TestCap;
    public int m_TestType;
    public String m_TestTimeLong;
    public String m_MasterCorp;
    public String m_Filiale;
    public String m_Subarea;
    public String m_BureauNO;
    public String m_BattGroupName;
    public String m_BattProducer;
    public Date m_BattProducedTime;
    public Date m_BattFirstUsedTime;
    public String m_VictorMan;
    public Date m_TestTime;
    public String m_ContactPhone;
    public String m_StopType;
    public String m_TestDevice;
    public String m_Remark;
    private int StrToInt(String str)
    {
        return Integer.parseInt(str);
    }
    public void setDataInf(byte[] inf_data)
    {
        int IDCtype = 0;
        String tmpstr = new String(inf_data);
        //System.out.println(tmpstr);
        for (int i=0; i<17; i++)
        {
            int j = tmpstr.indexOf(",");
            if(i == 6)   //--------标称容量
            {
                String text = tmpstr.substring(0,j).trim();
                if(text != "")
                     m_STDAH = StrToInt(text);
                else m_STDAH = 1000;
            }
            if(i == 7)  //--------单体电压
            {
                String text = tmpstr.substring(0,j).trim();
                if(text != "")
                     m_MonomerVol = StrToInt(text);
                else m_MonomerVol = 2;
            }
            if(i == 8)  //--------小时率
            {
                String text = tmpstr.substring(0,j).trim();
                if(text != "")
                      m_HourRate = StrToInt(text);
                else  m_HourRate = 10;
            }
            if(i == 11)  //--------电池组数
            {
                String text = tmpstr.substring(0,j).trim();
                if(text != "")
                    m_BattGroup = StrToInt(text);
            }
            if(i == 12) //--------单体数量
            {
                String text = tmpstr.substring(0,j).trim();
                if(text != "") m_EachBattSum = StrToInt(text);
                else m_EachBattSum = 24;
                if(IDCtype == 0)
                {
                    if(m_EachBattSum > 250) m_EachBattSum = 24;
                }
                else if(m_EachBattSum > 24) m_EachBattSum = 24;
            }
            if (i == 0) m_Filiale = tmpstr.substring(0,j).trim();        //分公司
            if (i == 1) m_Subarea = tmpstr.substring(0,j).trim();        //分区
            if (i == 2) m_BattGroupName = tmpstr.substring(0,j).trim();  //电池组名称
            if (i == 3)
            {
                String testtime = tmpstr.substring(0,j).trim();
                if(testtime.contains("  ")) {
                    testtime.replace("  ", " ");
                }
                m_TestTime = IdcTestTime.getDateFromStr(testtime);        //测试时间
            }
            if (i == 4) m_BattProducer = tmpstr.substring(0,j).trim();    //电池品牌
            //if (i == 5) m_BattType = tmpstr.SubString(1,j).Trim();     //电池型号
            if (i == 9) m_VictorMan = tmpstr.substring(0,j).trim();        //维护人员
            if (i == 10) m_ContactPhone = tmpstr.substring(0,j).trim();    //联系电话
            if (i == 13) m_BureauNO = tmpstr.substring(0,j).trim();        //局站编号
            if (i == 14)
            {
                if(tmpstr.substring(0,j).trim() != "")                    //电池生产日期
                    m_BattProducedTime = Com.getDateTimeFromStr(tmpstr.substring(0,j).trim(), Com.DTF_YMD);
            }
            if (i == 15)
            {
                if(tmpstr.substring(0,j).trim() != "")                    //电池投入使用日期
                    m_BattFirstUsedTime = Com.getDateTimeFromStr(tmpstr.substring(0,j).trim(), Com.DTF_YMD);
            }
            if (i == 16)
            {
                m_Remark = tmpstr.substring(0,j).trim();//备注
            }
            if(i>10)
                tmpstr += "  , ";
            tmpstr = tmpstr.substring(j+1, tmpstr.length()).trim();
        }
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/idc/IdcTestTime.java
New file
@@ -0,0 +1,102 @@
package com.data.idc;
import java.util.Date;
import java.util.GregorianCalendar;
import com.data.fbo.FboTestTime;
public class IdcTestTime {
    public int year;
    public int month;
    public int dayofweek;
    public int day;
    public int hour;
    public int minute;
    public int second;
    public int millsecond;
    public long getTimeInSecond()
    {
        GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
        gc.set(GregorianCalendar.YEAR, year);
        gc.set(GregorianCalendar.MONTH, month-1);
        gc.set(GregorianCalendar.DATE, day);
        gc.set(GregorianCalendar.HOUR_OF_DAY, hour);
        gc.set(GregorianCalendar.MINUTE, minute);
        gc.set(GregorianCalendar.SECOND, second);
        return (gc.getTimeInMillis()/1000);
    }
    public static Date getDateFromStr(String str_time)
    {
        GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
        int year = 1, month = 1, day = 1, hour = 0, minute = 0, second = 0;
        String str = str_time;
        if(str.indexOf("-") >= 0) {
            year = Integer.parseInt(str.substring(0, str.indexOf("-")).trim());
            str = str.substring(str.indexOf("-")+1, str.length());
            month = Integer.parseInt(str.substring(0, str.indexOf("-")).trim());
            str = str.substring(str.indexOf("-")+1, str.length());
        } else if(str.indexOf("/") >= 0) {
            year = Integer.parseInt(str.substring(0, str.indexOf("/")).trim());
            str = str.substring(str.indexOf("/")+1, str.length());
            month = Integer.parseInt(str.substring(0, str.indexOf("/")).trim());
            str = str.substring(str.indexOf("/")+1, str.length());
        }
        if(str.indexOf(" ") >= 0) {
            day = Integer.parseInt(str.substring(0, str.indexOf(" ")).trim());
            str = str.substring(str.indexOf(" ")+1, str.length()).trim();
        } else {
            day = Integer.parseInt(str.trim());
            str = str.trim();
        }
        if(year < day) {
            int tmp = year;
            year = day;
            day = tmp;
        }
        if(str.indexOf(" ") >= 0) {
            str = str.substring(str.indexOf(" ")+1, str.length());
        }
        if(str.indexOf(":") >= 0) {
            hour = Integer.parseInt(str.substring(0, str.indexOf(":")).trim());
            if(str_time.contains("下午")) {
                if(hour < 12) {
                    hour += 12;
                }
            }
            str = str.substring(str.indexOf(":")+1, str.length());
            minute = Integer.parseInt(str.substring(0, str.indexOf(":")).trim());
            str = str.substring(str.indexOf(":")+1, str.length());
            second = Integer.parseInt(str.trim());
        }
        gc.set(GregorianCalendar.YEAR, year-2000);
        gc.set(GregorianCalendar.MONTH, month);
        gc.set(GregorianCalendar.DATE, day);
        gc.set(GregorianCalendar.HOUR_OF_DAY, hour);
        gc.set(GregorianCalendar.MINUTE, minute);
        gc.set(GregorianCalendar.SECOND, second);
        return gc.getTime();
    }
    public static FboTestTime getFboTestTime(IdcTestTime t_end, IdcTestTime t_begin)
    {
        FboTestTime fbo_time = new FboTestTime();
        long seconds = t_end.getTimeInSecond() - t_begin.getTimeInSecond();
        fbo_time.hour = (int) (seconds / 3600);
        fbo_time.minute = (int) ((seconds % 3600) / 60);
        fbo_time.second = (int) (seconds % 60);
        return fbo_time;
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/lib/aopalliance-1.0.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/c3p0-0.9.5.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/c3p0-oracle-thin-extras-0.9.5.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/dom4j-1.6.1.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/ftplet-api-1.0.6.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/ftpserver-core-1.0.6.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/jcl-over-slf4j-1.5.2.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/jconn3.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/jxl.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-1.2.14.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-api-2.15.0.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/log4j-core-2.15.0.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/mchange-commons-java-0.2.9.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/mina-core-2.0.4.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/mysql-connector-java-5.1.30-bin.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/slf4j-api-1.5.2.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/slf4j-log4j12-1.5.2.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-beans-2.5.5.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-context-2.5.5.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/spring-core-2.5.5.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/lib/sqljdbc4.jar
Binary files differ
BattMonitor_ElectLock_ListenSystemForLinux/log4j2_electlock_listensystem_x64.xml
New file
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
    <properties>
        <Property name="PATTERN_LAYOUT">%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] [%level] %logger{36} - %msg%n</Property>
        <property name="LOG_HOME">fbs9100s_listensystem_x64_logs</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${PATTERN_LAYOUT}" />
        </Console>
        <!--warn及以下日志-->
        <RollingFile name="INFO" fileName="${LOG_HOME}/info.log" filePattern="${LOG_HOME}/info-%d{yyyyMMdd}-%i.log.gz">
            <PatternLayout pattern="${PATTERN_LAYOUT}"/>
            <Filters>
                <!--如果是error级别拒绝-->
                <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
                <!--如果是info\warn输出-->
                <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <!--单个文件大小-->
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <!--保存日志文件个数-->
            <DefaultRolloverStrategy max="15">
                <Delete basePath="${LOG_HOME}/" maxDepth="2">
                    <IfFileName glob="*.log.gz" >
                        <IfAny>
                          <IfAccumulatedFileCount exceeds="14" />
                        </IfAny>
                    </IfFileName>
                    <!--!Note: 这里的age必须和filePattern协调, 后者是精确到dd, 这里就要写成xd, xD就不起作用,另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--30天-->
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <!--error级别日志输出-->
        <RollingFile name="ERROR" fileName="${LOG_HOME}/error.log" filePattern="${LOG_HOME}/error-%d{yyyyMMdd}-%i.log.gz">
            <PatternLayout pattern="${PATTERN_LAYOUT}"/>
            <Filters>
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
            </Filters>
            <Policies>
                <TimeBasedTriggeringPolicy />
                <SizeBasedTriggeringPolicy size="20MB"/>
            </Policies>
            <DefaultRolloverStrategy max="15">
                <Delete basePath="${LOG_HOME}/" maxDepth="2">
                    <IfFileName glob="*.log.gz" >
                        <IfAny>
                          <IfAccumulatedFileCount exceeds="14" />
                        </IfAny>
                    </IfFileName>
                    <!--!Note: 这里的age必须和filePattern协调, 后者是精确到dd, 这里就要写成xd, xD就不起作用,另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--30天-->
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="trace">
            <AppenderRef ref="Console" />
            <appenderRef ref="INFO" />
            <appenderRef ref="ERROR" />
        </Root>
    </Loggers>
</Configuration>
BattMonitor_ElectLock_ListenSystemForLinux/src/com/base/Com.java
New file
@@ -0,0 +1,155 @@
package com.base;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Com {
    final public static int UploadData_ClientType_BS_CLI = 0;
    final public static int UploadData_ClientType_CS_CLI = 1;
    final public static int UploadData_ClientType_CS_SVR = 2;
    final public static String DTF_YMDhms = "yyyy-MM-dd HH:mm:ss";
    final public static String DTF_YMDhm = "yyyy-MM-dd HH:mm";
    final public static String DTF_YMDh = "yyyy-MM-dd HH";
    final public static String DTF_YMD = "yyyy-MM-dd";
    final public static String DTFYMD = "yyyyMMdd";
    final public static String DTF_hms = "HH:mm:ss";
    final public static String DTF_YMD_h_m_s = "yyyy-MM-dd+HH_mm_ss";
    //final public static DateFormat DateTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    /**
     * 将传入的时间转换成指定的的时间格式并返回时间格式化之后的字符串
     * @param dt        需要转换的时间
     * @param format    格式化字符串
     * @return
     */
    public static String getDateTimeFormat(Date dt, String format){
        DateFormat dtf = new SimpleDateFormat(format);
        return dtf.format(dt);
    }
    /**
     * 将传入的字符串按指定的格式解析成时间类型并返回
     * @param dt       需要解析的字符串
     * @param format   指定的时间格式
     * @return
     */
    public static Date getDateTimeFromStr(String dt, String format){
        DateFormat dtf = new SimpleDateFormat(format);
        Date date = new Date();
        try {
            date = dtf.parse(dt);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }
    /**
     * 判断number参数是否是整型数表示方式
     * @param number
     * @return
     */
    public static boolean isIntegerNumber(String number){
        number = number.trim();
        String intNumRegex = "\\-{0,1}\\d+";    //整数的正则表达式
        if(number.matches(intNumRegex))
            return true;
        else
            return false;
    }
    /**
     * 判断number参数是否是浮点数表示方式
     * @param numbe
     * @return
     */
    public static boolean isFloatPointNumber(String number){
        number = number.trim();
        String intNumRegex = "\\-{0,1}\\d+";                //整数的正则表达式
        String pointPrefix = "(\\-|\\+){0,1}\\d*\\.\\d+";    //浮点数的正则表达式-小数点在中间与前面
        String pointSuffix = "(\\-|\\+){0,1}\\d+\\.";        //浮点数的正则表达式-小数点在后面
        if(number.matches(intNumRegex) || number.matches(pointPrefix) || number.matches(pointSuffix))
            return true;
        else
            return false;
    }
    /**
     * 判断number参数是否是日期表示方式
     * @param str
     * @return
     */
    public static boolean isValidDate(String str, String format) {
        boolean convertSuccess = true;
        try {
            //DateTimeFormat.setLenient(false);
            DateFormat dtf = new SimpleDateFormat(format);
            dtf.parse(str);
         } catch (ParseException e) {
             convertSuccess = false;
         }
         return convertSuccess;
    }
    /**
     * 设置系统的日期时间
     * @param str
     * @return
     */
    public static void setDateTime(Date ts){
        String osName = System.getProperty("os.name");
        String cmd = "";
        try {
            if (osName.matches("^(?i)Windows.*$")) {// Window ϵͳ
                // 格式 HH:mm:ss
                cmd = "cmd /c time " + getDateTimeFormat(ts, Com.DTF_hms);
                Runtime.getRuntime().exec(cmd);
                // 格式:yyyy-MM-dd
                cmd = "cmd /c date " + getDateTimeFormat(ts, Com.DTF_YMD);
                Runtime.getRuntime().exec(cmd);
            } else {// Linux ϵͳ
                // 格式:yyyyMMdd
                cmd = "date -s " + getDateTimeFormat(ts, Com.DTFYMD);
                Runtime.getRuntime().exec(cmd);
                // 格式 HH:mm:ss
                cmd = "date -s " + getDateTimeFormat(ts, Com.DTF_hms);
                Runtime.getRuntime().exec(cmd);
            }
        } catch (IOException e) {
              e.printStackTrace();
        }
    }
    /**
     *
     * @param
     * @return
     */
    public static void getIPFromStr(String ipstr, byte ip[])
    {
        try
        {
            for(int n=0; n < 3; n++)
            {
                int index = ipstr.indexOf('.');
                if(index > 0)
                    ip[n] = (byte)Integer.parseInt(ipstr.substring(0, index));
                ipstr = ipstr.substring(index+1);
            }
            ip[3] = (byte)Integer.parseInt(ipstr);
            //System.out.println((ip[0]&0xFF) + ": "+(ip[1]&0xFF) + ": "+(ip[2]&0xFF)+ ": "+(ip[3]&0xFF));
        }
        catch(Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/base/ComBase.java
New file
@@ -0,0 +1,171 @@
package com.base;
public class ComBase
{
    public static final byte CapType_Rest = 0;
    public static final byte CapType_Real = 1;
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    public static byte changeIntToByte(int data)
    {
        return (byte)(data & 0xFF);
    }
    //------------------------------------------------------------------------------
    public static short changeIntToShort(int data)
    {
        return (short)(data & 0xFFFF);
    }
    //------------------------------------------------------------------------------
    public static byte changeShortToByte(short data)
    {
        return (byte)(data & 0xFF);
    }
    //------------------------------------------------------------------------------
    public static int changeByteToInt(byte data)
    {
        int tmp = data;
        return (tmp & 0xFF);
    }
    //------------------------------------------------------------------------------
    public static int changeShortToInt(short data)
    {
        int tmp = data;
        return (tmp & 0xFFFF);
    }
    //------------------------------------------------------------------------------
    public static double changeShortToDouble(short data)
    {
        int tmp = data & 0xFFFF;
        return (double)(tmp);
    }
    //------------------------------------------------------------------------------
    public static short changeDoubleToShort(double data)
    {
        int tmp = (int)data;
        return (short)(tmp & 0xFFFF);
    }
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    public static double GetFDCurrent(double stdcap, int hourrate)
    {
        double res = 0.055;
        switch(hourrate)
        {
            case 1: res = 0.514; break;
            case 2: res = 0.306; break;
            case 3: res = 0.250; break;
            case 4: res = 0.200; break;
            case 5: res = 0.166; break;
            case 6: res = 0.146; break;
            case 7: res = 0.131; break;
            case 8: res = 0.118; break;
            case 9: res = 0.108; break;
            case 10: res = 0.100; break;
            case 20: res = 0.055; break;
            default: res = 0.055; break;
        }
        return (stdcap * res);
    }
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    public static int GetHourRate(double stdah, double current)
    {
        int index = 0;
        double value[]={5.14, 3.06, 2.50, 2.00, 1.66, 1.46, 1.31, 1.18, 1.08, 1.00, 0.55};
        double res;
        if(stdah < 1)
            stdah = 1;
        res = current/(stdah/10);
        if(res >= 5.14) return 1;
        else if(res <= 0.55) return 20;
        else
        {
            for(index=0; index<10; index++)
            {
                if((res<=value[index]) && (res>value[index+1]))    break;
                else continue;
            }
            if((value[index]-res) < (res-value[index+1]))
            {
                return (index+1);
            }
            else
            {
                if(index+2 > 10) return (20);
                else return (index+2);
            }
        }
    }
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
    public static double N_TO_10H(int n_H)
    {
        switch(n_H)
        {
            case  1 : return(1/0.55);
            case  2 : return(1/0.61);
            case  3 : return(1/0.75);
            case  4 : return(1/0.79);
            case  5 : return(1/0.833);
            case  6 : return(1/0.876);
            case  7 : return(1/0.917);
            case  8 : return(1/0.944);
            case  9 : return(1/0.974);
            case  10: return(1/1);
            case  20: return(1/1.1);
        }
        return 1.0;
    }
    //-------------------------------------------------------------------------------
    //-------------------------------------------------------------------------------
    public static double GetMonomerCap(double STDAH, int HourRate, double SumAH, double MaxMonomerVol,
                                        double MonomerVol, double MonomerVolType, byte CapType)
    {
        if(MaxMonomerVol - MonomerVolType*0.9 <= 0)
            return 0;
        if(STDAH < 1)
            STDAH = 1;
        if(SumAH < 0)
            SumAH *= (-1);
        double tmp_cap;
        tmp_cap = MonomerVol - MonomerVolType * 0.9;
        tmp_cap *= (STDAH - SumAH * N_TO_10H(HourRate));
        double dt_vol = MaxMonomerVol - MonomerVolType*0.9;
        if(dt_vol < 0.01)
            dt_vol = 0.01;
        tmp_cap = tmp_cap/dt_vol;
        if(tmp_cap < 0)
            tmp_cap = 0;
        if(CapType == CapType_Rest)
            return tmp_cap;
        else if(CapType == CapType_Real)
            return (tmp_cap + SumAH * N_TO_10H(HourRate));
        else
            return ((tmp_cap + SumAH * N_TO_10H(HourRate))*100 / STDAH);
    }
    //----------------------------------------------------------------------------------
    //----------------------------------------------------------------------------------
    public static int GetRestTimeSecond(double restcap, double curr)
    {
        double tmp_curr = Math.abs(curr);
        if(tmp_curr < 0.1)
            tmp_curr = 0.1;
        int rest_time = (int)((restcap / tmp_curr) * 3600);
        if(rest_time > (99*3600))
            rest_time = (99*3600);
        return rest_time;
    }
    //----------------------------------------------------------------------------------
}
/***************************************************************************************
******************************* end of file (FBS_ComBase)*******************************
***************************************************************************************/
BattMonitor_ElectLock_ListenSystemForLinux/src/com/config/AppConfig.java
New file
@@ -0,0 +1,205 @@
package com.config;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 创建config.xml文件并更新  config.xml 文件中的属性值
 * @author 军
 *
 */
public class AppConfig {
private final String ConfigFileName = "config.xml";
    private String sqlServerIp = "127.0.0.1";        //数据库IP地址
    private int sqlServerPort = 3382;                //数据库端口号
    private int sqlConnCountMax = 200;                //数据库连接池数量
    private int lockAcceptPort = 9001;                //电子锁通信端口
    private String commType = "IP";                    //电子锁识别方式 IP地址-与串口服务器IP地址识别      SN-外网与GPRS模块SN识别
    private Logger logger = null;
    public AppConfig()
    {
        logger = LogManager.getLogger(this.getClass());
        /*
        String path = System.getProperty("user.dir");
        if(path.contains("\\"))
            path += "\\";
        else path += "/";
        */
        String path = ConfigFileName;
        //System.out.println(path);
        File f = new File(path);
        if(false == f.exists())
        {
            writeConfigToXml();
        }
        readConfigFromXml();
    }
    public void copyAppParam(AppConfig config) {
        this.sqlServerIp = config.sqlServerIp;                            //数据库IP地址
        this.sqlServerPort = config.sqlServerPort;                        //数据库端口号
        this.sqlConnCountMax = config.sqlConnCountMax;                    //数据库连接池数量
    }
    public void writeConfigToXml()
    {
        try {
            Document document = DocumentHelper.createDocument();
            Element root = document.addElement("root");
            //root.addComment("这个一个注释");
            Element param;
            //-------------------------------------------------------//
            param = root.addElement("sql_server_ip");
            param.addText(sqlServerIp);
            param = root.addElement("sql_server_port");
            param.addText(String.valueOf(sqlServerPort));
            param = root.addElement("sql_conncount_max");
            param.addText(String.valueOf(sqlConnCountMax));
            param = root.addElement("lockAcceptPort");
            param.addText(String.valueOf(lockAcceptPort));
            param = root.addElement("commType");
            param.addText(commType);
            //-------------------------------------------------------//
            //-------------------------------------------------------//
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("gbk");
            XMLWriter writer2 = new XMLWriter(new FileWriter(ConfigFileName), format);
            writer2.write(document);
            writer2.close();
        } catch (UnsupportedEncodingException e) {
            logger.error(e.toString(), e);
        } catch (IOException e) {
            logger.error(e.toString(), e);
        }
    }
    public void readConfigFromXml()
    {
        boolean res = true;
        try
        {
            SAXReader reader = new SAXReader();
            Document document = reader.read(new File(ConfigFileName));
            Element rootnode = document.getRootElement();
            Element node;
            Element sub_node;
            //------------------------------------------------------------//
            //------------------------------------------------------------//
            node = rootnode.element("sql_server_ip");
            sqlServerIp = node.getTextTrim();
            //------------------------------------------------------------//
            node = rootnode.element("sql_server_port");
            sqlServerPort = Integer.parseInt(node.getTextTrim());
            //------------------------------------------------------------//
            node = rootnode.element("sql_conncount_max");
            sqlConnCountMax = Integer.parseInt(node.getTextTrim());
            if(sqlConnCountMax < 10)
                sqlConnCountMax = 10;
            if(sqlConnCountMax > 1000)
                sqlConnCountMax = 800;
            //------------------------------------------------------------//
            node = rootnode.element("lockAcceptPort");
            lockAcceptPort = Integer.parseInt(node.getTextTrim());
            if(lockAcceptPort < 10000) {
                lockAcceptPort = 9001;
            }
            node = rootnode.element("commType");
            commType = node.getTextTrim();
            //------------------------------------------------------------//
        } catch (NullPointerException | NumberFormatException | DocumentException e) {
            res = false;
            logger.error(e.toString(), e);
        } finally {
            if(false == res)
                writeConfigToXml();
        }
    }
    public String getConfigFileName() {
        return ConfigFileName;
    }
    public int getLockAcceptPort() {
        return lockAcceptPort;
    }
    public String getCommType() {
        return commType;
    }
    public Logger getLogger() {
        return logger;
    }
    public void setSqlServerIp(String sqlServerIp) {
        this.sqlServerIp = sqlServerIp;
    }
    public void setSqlServerPort(int sqlServerPort) {
        this.sqlServerPort = sqlServerPort;
    }
    public void setSqlConnCountMax(int sqlConnCountMax) {
        this.sqlConnCountMax = sqlConnCountMax;
    }
    public void setLockAcceptPort(int lockAcceptPort) {
        this.lockAcceptPort = lockAcceptPort;
    }
    public void setCommType(String commType) {
        this.commType = commType;
    }
    public void setLogger(Logger logger) {
        this.logger = logger;
    }
    public String getSqlServerIp() {
        return sqlServerIp;
    }
    public int getSqlServerPort() {
        return sqlServerPort;
    }
    public int getSqlConnCountMax() {
        return sqlConnCountMax;
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/del/TmpFileUtil.java
New file
@@ -0,0 +1,101 @@
package com.del;
import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
//import org.apache.logging.log4j.LogManager;
//import org.apache.logging.log4j.Logger;
//
//import main.main_MonitorServer_CKPower;
/**
 * 临时文件删除
 * @author LiJun
 *
 */
public class TmpFileUtil {
    private static Logger logger;
    public static void delTmpFile() {
        logger = LogManager.getLogger(TmpFileUtil.class);
        String OS = System.getProperty("os.name").toLowerCase();
        //System.out.println(OS);
        if(!OS.contains("window")) {
            //Linux 无临时文件
            return;
        }
        String file_path = "C:/Windows/Temp";
        //logger.info("开始移除程序生成的临时文件。。。");
        Path dir = Paths.get(file_path);
        try
        {
            Files.walkFileTree(dir, new SimpleFileVisitor<Path>()
            {
                  @Override
                  public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
                  {
                      //System.out.println(file.getFileName()+"Deleting file: " + (file.getFileName()).startsWith("e4j"));
//                      if((file.getFileName().toString().startsWith("e4j"))
//                        || (file.toString().contains("e4j"))
//                              ) {
                        try {
                            Files.delete(file);
                        } catch (Exception e) {
                            logger.error(e.toString(), e);
                        }
//                      }
                      return FileVisitResult.CONTINUE;
                  }
                  @Override
                  public FileVisitResult postVisitDirectory(Path dir,
                          IOException exc) throws IOException
                  {
//                      if(dir.getFileName().toString().startsWith("e4j")
//                        || dir.toString().contains("tomcat")
//
//                      ) {
                          if (exc == null) {
                              //System.err.println("Deleting dir: " + dir);
                              try {
                                Files.delete(dir);
                            } catch (Exception e) {
                                logger.error(e.toString(), e);
                            }
                          } else {
                              throw exc;
                          }
//                      }
                      return FileVisitResult.CONTINUE;
                   }
                  @Override
                  public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
                      //logger.error("Visiting failed for %s\n", file);
                      return FileVisitResult.SKIP_SUBTREE;
                  }
                });
        }
        catch (Exception e)
        {
            //logger.error(e.toString(), e);
        } finally {
            //logger.info("移除临时文件结束。。。");
        }
    }
    public static void main(String[] args) {
        delTmpFile();
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/ListenSystem_SQL.java
New file
@@ -0,0 +1,167 @@
package com.listen;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.base.Com;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
public class ListenSystem_SQL {
    public final static String TB_Process_SurveyTable = "tb_process_survey";        //用于监控各个程序线程的运行状况表
    /**
     * 创建线程监控表
     * @param con_pool
     */
    public static void CreateProcessSurvey(MysqlConnPool con_pool){
        String sql_str = "CREATE TABLE IF NOT EXISTS `tb_process_survey` ("
                + "  `num` int(11) NOT NULL AUTO_INCREMENT,"
                + "  `ProcessId` int(12) NOT NULL UNIQUE ,"
                + "  `ProcessName` varchar(64) NOT NULL DEFAULT ' ',"
                + "  `ProcessTime` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',"
                + "  `Process_starttime` datetime NOT NULL DEFAULT '1970-01-01 00:00:00',"
                + "  `ServerName` varchar(64) NOT NULL DEFAULT ' ',"
                + "  `ServerFlag` int(11) NOT NULL DEFAULT '1',"
                + "  `ProcessVersion` varchar(64) DEFAULT ' ',"
                + "  `note` varchar(64) NOT NULL DEFAULT ' ',"
                + "  `OutTime` int(11) NOT NULL DEFAULT '60',"
                + "  PRIMARY KEY (`num`)"
                + ") ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;";
        String add_sql_str ="INSERT INTO `tb_process_survey` VALUES "
                        + "(1,11001,'BMS_ELECT_LOCK_COMM', '1970-01-01 00:00:00','1970-01-01 00:00:00', 'BMS_ELECT_LOCK_COMM', 1,' ', '主程序线程', 300),"
                        + "(2,11002, 'BMS_ELECT_LOCK_ALARM', '1970-01-01 00:00:00','1970-01-01 00:00:00', 'BMS_ELECT_LOCK_ALARM', 1,' ', '告警线程', 300),"
                        + "(8,11008, 'BMS_ELECT_LOCK_LISTEN', '1970-01-01 00:00:00','1970-01-01 00:00:00', 'BMS_ELECT_LOCK_LISTEN', 1,' ', '线程监控线程', 300),";
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        try {
            sql.sqlMysqlUseDB(Sql_Mysql.DB_USER);
            if(false == sql.sqlMysqlCheckIfTableExist(TB_Process_SurveyTable))
            {
                sql.sqlMysqlExecute(sql_str);
                sql.sqlMysqlExecute(add_sql_str);
                System.out.println("tb_process_survey create OK!");
            }
        } catch (SQLException e) {
            sql.logger.error(e.toString(), e);
        } finally{
            sql.close_con();
        }
    }
    /**
     * 查询所有的监控状态
     * @param con_pool
     * @return
     */
    public static List<Process_survey> searchAllListenSystem(MysqlConnPool con_pool){
        String sql_str = "SELECT num,ProcessName,ProcessTime,ServerName,ServerFlag,OutTime "
                    + "FROM "+Sql_Mysql.Process_Survey_Table;
        Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
        List<Process_survey> list = new ArrayList<Process_survey>();
        ResultSet rs = null;
        try {
            //sql.sqlMysqlUseDB(Sql_Mysql.WEB_Site);
            //System.out.println(sql_str+"******");
            rs = sql.sqlMysqlQuery(sql_str);
            while(rs.next()){
                Process_survey p = new Process_survey();
                p.setNum(rs.getInt("num"));
                p.setProcessName(rs.getString("ProcessName"));
                p.setProcessTime(rs.getTimestamp("processTime"));
                p.setServerName(rs.getString("ServerName"));
                p.setServerFlag(rs.getInt("serverFlag"));
                p.setOutTime(rs.getInt("outTime"));
                list.add(p);
            }
        } catch (SQLException e) {
            sql.logger.error(e.toString(), e);
        } finally{
            try {
                if(rs != null){
                    rs.close();
                }
            } catch (SQLException e) {
                sql.logger.error(e.toString(), e);
            }
            sql.close_con();
        }
        return list;
    }
    /**
     * 用于修改监控程序的运行状态:修改-->ServerFlag
     * @param con_pool
     * @param list
     */
    public static void updateMonitorStatue(MysqlConnPool con_pool,List<Process_survey> list){
        if(list != null && list.size()>0){
            ArrayList<String> sqls = new ArrayList<String>();
            for(int i=0;i<list.size();i++){
                String sql_str = "UPDATE " + Sql_Mysql.Process_Survey_Table
                        + " SET ServerFlag = "+list.get(i).getServerFlag()
                        + " WHERE ServerFlag!=2 AND num = "+list.get(i).getNum()+";";
                sqls.add(sql_str);
            }
            Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
            try {
                sql.sqlMysqlUseDB(Sql_Mysql.DB_USER);
                sql.makeManualCommit(sqls);
            } catch (SQLException e) {
                sql.logger.error(e.toString(), e);
            } finally{
                sql.close_con();
            }
        }
    }
    /**
     * 用于根据服务名修改监测服务的状态
     * @param con_pool
     * @param list
     */
    public static void updateMonitorStatueByServer(MysqlConnPool con_pool,List<Process_survey> list){
        if(list != null && list.size()>0){
            ArrayList<String> sqls = new ArrayList<String>();
            for(int i=0;i<list.size();i++){
                if(list.get(i).getServerFlag() == 2){
                    String sql_str = "UPDATE  " + Sql_Mysql.Process_Survey_Table
                            + " SET ServerFlag = "+list.get(i).getServerFlag()
                            + " WHERE ServerName = '"+list.get(i).getServerName()+"';";
                    sqls.add(sql_str);
                }else{
                    String sql_str = "UPDATE " + Sql_Mysql.Process_Survey_Table
                            + " SET ServerFlag = "+list.get(i).getServerFlag()
                            + ",ProcessTime='"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)
                            + "' WHERE ServerName = '"+list.get(i).getServerName()+"';";
                    sqls.add(sql_str);
                }
            }
            Sql_Mysql sql = new Sql_Mysql(con_pool.getConn());
            try {
                sql.sqlMysqlUseDB(Sql_Mysql.DB_USER);
                sql.makeManualCommit(sqls);
            } catch (SQLException e) {
                sql.logger.error(e.toString(), e);
            } finally{
                sql.close_con();
            }
        }
    }
    public static void main(String[] args) {
        MysqlConnPool m_Conn_Pool = new MysqlConnPool("127.0.0.1", 3360, 5);
        System.out.println(m_Conn_Pool);
        //CreateProcessSurvey(m_Conn_Pool);
        //System.out.println(searchAllListenSystem(m_Conn_Pool));
        //ListenSystem_Thread thread = new ListenSystem_Thread(m_Conn_Pool);
        //System.out.println(thread.getClass().getResource("/").getPath());
        System.out.println(System.getProperty("user.dir"));
        ListenSystem_Thread.updateListenSystem_Time(m_Conn_Pool);
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/ListenSystem_Thread.java
New file
@@ -0,0 +1,337 @@
package com.listen;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.ftpserver.util.OS;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.sql.MysqlConnPool;
import com.sql.Sql_Mysql;
import main.main_FBS9100S_ListenSystem;
public class ListenSystem_Thread extends Thread{
    public static final int HOST_TYPE_WINDOWS = 1;            //windowsϵͳ
    public static final int HOST_TYPE_LINUX = 2;            //linuxϵͳ
    public int DEV_TYPE = HOST_TYPE_WINDOWS;                //默认为windows系统
    private String ServerRestartPath;
    private MysqlConnPool con_pool;
    private List<String> BASEBAT;
    private List<String> Servers;            //定时启动的服务
    private Logger logger;
    public ListenSystem_Thread(MysqlConnPool con_pool) {
        logger = LogManager.getLogger(ListenSystem_Thread.class);
        this.con_pool = con_pool;
        ServerRestartPath = System.getProperty("user.dir")+"/ServerRestart.bat";
        BASEBAT = new ArrayList<String>();
        BASEBAT.add("%1 mshta vbscript:CreateObject(\"Shell.Application\").ShellExecute(\"cmd.exe\",\"/c %~s0 ::\",\"\",\"runas\",0)(window.close)&&exit");
        BASEBAT.add("cd /d \"%~dp0\"");
        //识别服务器的系统类型
        String OS = System.getProperty("os.name").toLowerCase();
        //System.out.println(OS);
        if(OS.contains("window")) {
            DEV_TYPE = HOST_TYPE_WINDOWS;
        }else {
            DEV_TYPE = HOST_TYPE_LINUX;
        }
        Servers = new ArrayList<String>();
        Servers.add("Tomcat_FBS");
    }
    @Override
    public void run() {
        try {
            ListenSystem_SQL.CreateProcessSurvey(con_pool);                                            //创建线程监测的表格
            updateListenSystem_StartTime(con_pool,"V"+main_FBS9100S_ListenSystem.m_VersionNum);        //更新启动时间和版本号
            logger.info(this.getName() + " - ListenSystem_Thread Started at "
                    + Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
            while(true){
                try {
                    sleep(30000);
                    updateListenSystem_Time(con_pool);
                    /************************** 监测各个线程的运行状态 ************************************************************/
                    List<Process_survey> list = ListenSystem_SQL.searchAllListenSystem(con_pool);        //查询所有的线程状态
                    List<Process_survey> lose = new ArrayList<Process_survey>();
                    boolean  restartserver = false;
                    for(int i=0;i<list.size();i++){
                        if(list.get(i).getServerFlag() == 1){
                            boolean isLose = checkLose(list.get(i));
                            if(isLose){
                                list.get(i).setServerFlag(0);
                                lose.add(list.get(i));
                            }
                        }
                        if(list.get(i).getServerName().equals("BMS_FBSDEV") && list.get(i).getServerFlag() == 0){
                            restartserver = true;            //需要重启所有的已启用的服务
                            lose = new ArrayList<Process_survey>();
                            break;
                        }
                    }
                    if(restartserver){
                        //System.err.println("重启所有已启用的服务"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                        for(int i=0;i<list.size();i++){
                            if(list.get(i).getServerFlag() != 2 && !(list.get(i).getServerName().equals("BMS_ELECT_LOCK_LISTEN"))){
                                list.get(i).setServerFlag(0);
                                lose.add(list.get(i));
                            }
                        }
                    }
                    if(lose.size()>0){
                        ListenSystem_SQL.updateMonitorStatue(con_pool, lose);                            //设置线程的运行状态
                    }
                    /************************** 重新启动各个需要重启的服务 ************************************************************/
                    List<Process_survey> relist = new ArrayList<Process_survey>();        //重启的集合
                    List<Process_survey> stlist = new ArrayList<Process_survey>();        //停止服务的集合
                    for(int i=0;i<list.size();i++){
                        if(list.get(i).getServerFlag() == 0){
                            checkServer(relist, list.get(i));
                        }else if(list.get(i).getServerFlag() == 2){
                            if(!checkLose(list.get(i))){
                                checkServer(stlist, list.get(i));                    //短时间内禁用的服务停止服务
                            }
                        }
                    }
                    if(relist.size() >0 || stlist.size()>0) {
                        if(DEV_TYPE == HOST_TYPE_WINDOWS) {
                            List<String> bats = new ArrayList<String>();
                            if(relist.size()>0 || stlist.size()>0){
                                String restr ="";
                                String ststr ="";
                                bats.addAll(BASEBAT);
                                for(int i=0;i<relist.size();i++){
                                    if(i==0){
                                        restr = relist.get(i).getServerName();
                                    }else{
                                        restr += ","+relist.get(i).getServerName();
                                    }
                                    bats.add("net stop "+relist.get(i).getServerName());
                                    bats.add("net start "+relist.get(i).getServerName());
                                    relist.get(i).setServerFlag(1);
                                }
                                for(int i =0;i<stlist.size();i++){
                                    if(i==0){
                                        ststr = stlist.get(i).getServerName();
                                    }else{
                                        ststr += ","+stlist.get(i).getServerName();
                                    }
                                    bats.add("net stop "+stlist.get(i).getServerName());
                                }
                                bats.add("exit");
                                //System.out.println(bats+"**************************");
                                boolean isCreate = createBat(bats,ServerRestartPath);
                                //System.out.println(isCreate+"********************");
                                if(isCreate){
                                    boolean isSuccess = callCmd(ServerRestartPath);
                                    //System.out.println(isSuccess+"&&&&&&&&&&&&&&&&&&&&&&");
                                    if(isSuccess){
                                        logger.info("重启"+relist.size()+"个服务:"+restr+";停止"+stlist.size()+"个服务:"+ststr+";"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                                        //System.out.println("重启成功");
                                        ListenSystem_SQL.updateMonitorStatueByServer(con_pool, relist);
                                    }
                                }
                            }
                        }else {
                            //需要停止的服务器
                            for(int i=0;i<stlist.size();i++) {
                                //callCmd(" sudo systemctl stop "+ stlist.get(i).getServerName());
                                callCmd(" sudo service "+ stlist.get(i).getServerName() + " stop ");
                            }
                            //需要重启的服务
                            for(int i=0;i<relist.size();i++) {
                                //callCmd(" sudo systemctl restart "+ relist.get(i).getServerName());
                                callCmd(" sudo service "+ relist.get(i).getServerName() + "  restart ");
                                relist.get(i).setServerFlag(1);
                            }
                            ListenSystem_SQL.updateMonitorStatueByServer(con_pool, relist);
                        }
                        sleep(35000);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e){
            logger.error("线程监控程序结束....",e);
            e.printStackTrace();
        }
    }
    /**
     * 检查监控程序是否终止
     * @param process_survey
     * @return
     */
    private boolean checkLose(Process_survey process_survey) {
        boolean flag = false;
        long timelong = (new Date().getTime() - process_survey.getProcessTime().getTime())/1000;
        //System.out.println(timelong);
        if(timelong > process_survey.getOutTime()){
            flag = true;
        }
        return flag;
    }
    /**
     * 判断list集合中是否有temp  没有:将temp添加到list中
     * @param list
     * @param temp
     */
    public void checkServer(List<Process_survey> list,Process_survey temp){
        boolean flag = true;
        if(list != null && list.size()>0){
            for(int i=0;i<list.size();i++){
                if(temp.getServerName().equals(list.get(i).getServerName())){
                    flag = false;
                    break;
                }
            }
        }
        if(flag){
            list.add(temp);
        }
    }
    /**
     * 根据字符串集合生成批处理文件
     * @param message
     * @param batpath
     * @return
     */
    public static boolean createBat(List<String> message,String batpath){
        boolean flag=false;
        FileOutputStream fos=null;
        BufferedWriter rw=null;
        try {
            File f=new File(batpath);
            if(f.exists()){
                f.delete();
            }
            fos=new FileOutputStream(batpath,true);
            for (int i = 0; i < message.size(); i++) {
                fos.write(message.get(i).getBytes());
                fos.write("\r\n".getBytes());
            }
            fos.flush();
            flag=true;
        } catch (Exception e) {
            e.printStackTrace();
        } finally{
            try {
                if(fos!=null){
                    fos.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return flag;
    }
    /**
     * 执行指定路径下的批处理
     * @param locationCmd        批处理的绝对路径
     * @return
     */
    public static boolean callCmd(String locationCmd){
        Process child = null;
        InputStream in = null;
        try {
            child = Runtime.getRuntime().exec(locationCmd);
            in = child.getInputStream();
            int c;
            int count =0;                    //设置5秒超时
            while (((c = in.read()) != -1) || count < 50) {
                //System.out.print((char)c);
                Thread.sleep(100);
                count++;
            }
            in.close();
            try {
                child.waitFor();
            } catch (InterruptedException e) {
                e.printStackTrace();
                return false;
            }
            //System.out.println("Run Bat OK....");
            return true;
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
            return false;
        }
    }
    //更新线程监控的时间戳
    public static void updateListenSystem_Time(MysqlConnPool conn_pool){
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        try {
            String sql_str = "UPDATE " + Sql_Mysql.Process_Survey_Table + " SET ProcessTime = '"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)
                    + "' WHERE ProcessName = 'BMS_ELECT_LOCK_LISTEN' "
                    + "AND ServerName='BMS_ELECT_LOCK_LISTEN'";
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    //更新线程监控的启动时间
    public static void updateListenSystem_StartTime(MysqlConnPool conn_pool,String version){
        Sql_Mysql sql = new Sql_Mysql(conn_pool.getConn());
        try {
//            sql.sqlMysqlUseDB(Sql_Mysql.WEB_Site);
            String sql_str = "UPDATE " + Sql_Mysql.Process_Survey_Table
                    + " SET ProcessVersion = '"+version+"',"
                    + "  Process_starttime = '"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)
                    + "'  WHERE ProcessName = 'BMS_ELECT_LOCK_LISTEN' "
                    + " AND ServerName='BMS_ELECT_LOCK_LISTEN'";
            //System.out.println(sql_str);
            sql.sqlMysqlExecute(sql_str);
            //启动时修改当前线程状态避免当前线程一直处于重启状态
            sql.sqlMysqlExecute("UPDATE " + Sql_Mysql.Process_Survey_Table + " SET " +
                    " ServerFlag = 1 " +
                    " WHERE ProcessName = 'BMS_ELECT_LOCK_LISTEN'" +
                    " AND ServerName='BMS_ELECT_LOCK_LISTEN' AND ServerFlag != 2");
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            sql.close_con();
        }
    }
    public static void main(String[] args) {
        //int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);//获取到当前的小时
       // System.out.println(hour);
        //String cmd = "cmd /c start D:\\桌面资源备份\\离线BTS安装包\\BTS蓄电池监控管理系统\\BTS蓄电池监控管理系统\\BATT_MS\\FBS_X64\\Batt_MS_FBSDEV_X64\\Batt_MS_FBSDEV/BTSE_DB_Builder.cmd";
        callCmd("cmd /c start cd.. a.cmd");
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/listen/Process_survey.java
New file
@@ -0,0 +1,77 @@
package com.listen;
import java.util.Date;
public class Process_survey {
    private Integer num;//进程编号
    private Integer ProcessId;        //进程Id
    private String  ProcessName;    //进程名
    private Date  ProcessTime;      //进程执行的时间
    private Date  Process_starttime;//进程开始启动时间
    private String ServerName;        //服务名
    private Integer ServerFlag;        //服务状态                 //0:服务需要重启                     1:服务运行正常                    2:服务暂未启用
    private String ProcessVersion;    //程序版本号
    private Integer OutTime;        //进程超时时间(秒)
    private String note;
    public Integer getNum() {
        return num;
    }
    public void setNum(Integer num) {
        this.num = num;
    }
    public String getProcessName() {
        return ProcessName;
    }
    public void setProcessName(String processName) {
        ProcessName = processName;
    }
    public Date getProcessTime() {
        return ProcessTime;
    }
    public void setProcessTime(Date processTime) {
        ProcessTime = processTime;
    }
    public String getServerName() {
        return ServerName;
    }
    public void setServerName(String serverName) {
        ServerName = serverName;
    }
    public Integer getServerFlag() {
        return ServerFlag;
    }
    public void setServerFlag(Integer serverFlag) {
        ServerFlag = serverFlag;
    }
    public Integer getOutTime() {
        return OutTime;
    }
    public void setOutTime(Integer outTime) {
        OutTime = outTime;
    }
    public String getNote() {
        return note;
    }
    public void setNote(String note) {
        this.note = note;
    }
    public Integer getProcessId() {
        return ProcessId;
    }
    public void setProcessId(Integer processId) {
        ProcessId = processId;
    }
    public Date getProcess_starttime() {
        return Process_starttime;
    }
    public void setProcess_starttime(Date process_starttime) {
        Process_starttime = process_starttime;
    }
    public String getProcessVersion() {
        return ProcessVersion;
    }
    public void setProcessVersion(String processVersion) {
        ProcessVersion = processVersion;
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/MysqlConnPool.java
New file
@@ -0,0 +1,50 @@
package com.sql;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
public class MysqlConnPool {
    private ComboPooledDataSource mysql_ds = new ComboPooledDataSource();
    private int mSqlPort = 3360;
    public MysqlConnPool(String server_ip, int port, int conncount_max) {
        try {
            init(server_ip, port, conncount_max);
        } catch (PropertyVetoException e) {
            e.printStackTrace();
        }
    }
    public void init(String server_ip, int port, int conncount_max) throws PropertyVetoException {
        this.mSqlPort = port;
        this.mysql_ds.setDriverClass("com.mysql.jdbc.Driver");
        this.mysql_ds.setJdbcUrl("jdbc:mysql://" + server_ip + ":" + this.mSqlPort);
        this.mysql_ds.setUser("root");
        this.mysql_ds.setPassword("Hdw8688139");
        this.mysql_ds.setMaxPoolSize(conncount_max);
        this.mysql_ds.setMinPoolSize(2);
        this.mysql_ds.setIdleConnectionTestPeriod(300);
    }
    public Connection getConn() {
        Connection con = null;
        try {
            con = this.mysql_ds.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return con;
    }
    public int getSqlConnPort() {
        return this.mSqlPort;
    }
}
/*
 * Location:
 * C:\Users\LiJun\Desktop\公司各种设备资料\9600显示模块相关文件\后台程序\2018-09-07\BattFBS9600XSP.
 * jar Qualified Name: com.sql.MysqlConnPool JD-Core Version: 0.6.2
 */
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/Sql_Mysql.java
New file
@@ -0,0 +1,252 @@
package com.sql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
/**
 *     创建数据库以及表格
 * @author 军
 *
 */
public class Sql_Mysql
{
    //--------------------------------------------------------------------------------------------//
    public static final String DB_AREA                     = "`db_area`";
    public static final String DB_LOCK_RAM                 = "`db_lock_ram`";
    public static final String DB_USER                     = "`db_user`";
    public static final String DB_LOCK_HIS                 = "`db_lock_his`";      //锁具历史状态库
    public static final String DB_LOCK_ALARM             = "`db_lock_alarm`";    //锁具告警库
    /*********************************************************/
    public static final String Lock_Rt_Table             = DB_LOCK_RAM + ".tb_lock_rt";
    public static final String Lock_Ctl_Log_Table         = DB_LOCK_RAM + ".tb_lock_ctl_log";
    public static final String Lock_Report_Table         = DB_LOCK_RAM + ".tb_lock_report";        //锁具开锁次数统计表
    /*********************************************************/
    /***************  ************ db_area  ******************************/
    public static final String Lock_Inf_Table             = DB_AREA + ".tb_lock_inf";
    public static final String Key_Inf_Table             = DB_AREA + ".tb_key_inf";
    public static final String Auth_Idcard_Table         = DB_AREA + ".tb_auth_idcard";            //批量添加授权和取消授权表
    public static final String Auth_Idcard_His_Table     = DB_AREA + ".tb_auth_idcard_his";        //批量添加授权和取消授权历史表
    /*********************************************************/
    /***************************** db_lock_his ****************************/
    public static final String Lock_His_Table             = DB_LOCK_HIS + ".tb_lock_his_";        //锁具开锁次数统计表
    /*********************************************************/
    /***************************** db_user ****************************/
    public static final String Process_Survey_Table     = DB_USER + ".tb_process_survey";        //线程管理表
    /***************************** db_lock_alarm ****************************/
    public static final String Lock_Alarm_Table     = DB_LOCK_ALARM + ".tb_lock_alarm";        //实时告警
    public static final String Lock_Alm_Temp_Table     = DB_LOCK_ALARM + ".tb_lock_alm_temp";    //告警临时表
    public static final String Lock_Alarm_His_Table = DB_LOCK_ALARM + ".tb_lock_alarm_";    //历史告警表    //--------------------------------------------------------------------------------------------//
    public Connection mysql_con;
    public Logger logger;
    public Sql_Mysql(Connection conn)
    {
        mysql_con = conn;
        logger = LogManager.getFormatterLogger();
    }
    /*
    public static Connection getConnection() throws SQLException, java.lang.ClassNotFoundException{
        String url = "jdbc:mysql://192.168.48.128:3306/studentinfo";
        Class.forName("com.mysql.jdbc.Driver");
        String userName = "root";
        String password = "lmx8688139";
        Connection con = DriverManager.getConnection(url,userName,password);
        return con;
    }
    */
    public void close_con()
    {
        try {
            mysql_con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    //使用db数据库
    public void sqlMysqlUseDB(String db) throws SQLException
    {
        sqlMysqlExecute("use " + db);
    }
    /**
     * 检查tb表是否存在
     * @param tb
     * @return
     * @throws SQLException
     */
    public boolean sqlMysqlCheckIfTableExist(String tb) throws SQLException
    {
        String sql_str = "SHOW TABLES LIKE '" + tb + "'";
        ResultSet res = sqlMysqlQuery(sql_str);
        boolean exist = false;
        while(res.next())
        {
            exist = true;
            break;
        }
        return exist;
    }
    //执行sql语句
    public void sqlMysqlExecute(String sql_str) throws SQLException
    {
        Statement sql = mysql_con.createStatement();
        sql.setQueryTimeout(30);
        sql.execute(sql_str);
    }
    //在事物中执行多条sql语句
    public boolean makeManualCommit(ArrayList<String> al_sql_strs)
    {
        boolean exe_res = true;
        try {
            mysql_con.setAutoCommit(false);
            for(int n=0; n<al_sql_strs.size(); n++) {
                sqlMysqlExecute(al_sql_strs.get(n));
            }
            if(true == exe_res) {
                mysql_con.commit();
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            exe_res = false;
        } finally {
            try {
                if(false == exe_res) {
                    mysql_con.rollback();
                }
                mysql_con.setAutoCommit(true);
            } catch (SQLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }
        return exe_res;
    }
    //根据sql语句执行sql查询语句
    public ResultSet sqlMysqlQuery(String sql_str)
    {
        ResultSet res = null;
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            res =  sql.executeQuery(query);
        }
        catch(SQLException ex)
        {
            System.err.println("SQLException:" + ex.getMessage());
        }
        return res;
    }
    public boolean sqlMySqlExecute(String sql_str){
        PreparedStatement ps = null;
        boolean flag = false;
        try {
            ps = mysql_con.prepareStatement(sql_str);
            int length = ps.executeUpdate();
            if(length > 0){
                flag = true;
            }
        } catch (SQLException e) {
            flag = false;
            e.printStackTrace();
        }
        return flag;
    }
    //根据sql语句执行sql更新语句
    public void sqlMysqlUpdate(String sql_str)
    {
        try
        {
            Statement sql = mysql_con.createStatement();
            sql.setQueryTimeout(30);
            String query = sql_str;
            sql.execute(query);
        }
        catch(SQLException ex)
        {
            System.out.println("SQLException:" + ex.getMessage());
        }
    }
    //获取新创建的记录的testrecordcount的值
    public int getBattTestRecordCountNew(int bg_id, String table)
    {
        int count = 0;
        boolean res_exe = true;
        String sql_str0 = "SELECT test_record_count_ex FROM " + table
                            + " WHERE BattGroupId=" + bg_id  + " FOR UPDATE";
        String sql_str1 = "UPDATE " + table + " SET test_record_count_ex=test_record_count+1"
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str2 = "SELECT MAX(test_record_count_ex) FROM " + table
                            + " WHERE BattGroupId=" + bg_id;
        String sql_str3 = "INSERT INTO " + table + " (BattGroupId,test_record_count, test_record_count_ex) "
                            + " VALUES (" + bg_id + "," + 1 + "," + 1 + ")";
        try {
            mysql_con.setAutoCommit(false);
            ResultSet res = sqlMysqlQuery(sql_str0);
            if(res.next()) {
                sqlMysqlExecute(sql_str1);
                res = sqlMysqlQuery(sql_str2);
                if(res.next()) {
                    count = res.getInt(1);
                }
            } else {
                count = 1;
                sqlMysqlExecute(sql_str3);
            }
            mysql_con.commit();
        } catch (SQLException e) {
            e.printStackTrace();
            res_exe = false;
        } finally {
            if(false == res_exe) {
                try {
                    mysql_con.rollback();
                    mysql_con.setAutoCommit(true);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return count;
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/sql/SybaseConnPool.java
New file
@@ -0,0 +1,48 @@
package com.sql;
import java.beans.PropertyVetoException;
import java.sql.Connection;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class SybaseConnPool {
private ComboPooledDataSource sybase_ds = new ComboPooledDataSource();
    public SybaseConnPool()
    {
        try {
            init();
        } catch (PropertyVetoException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void init() throws PropertyVetoException
    {
        sybase_ds.setDriverClass("com.sybase.jdbc3.jdbc.SybDriver");
        /*
        String connStr = "jdbc:sybase:Tds:" + GetIpAddr.getLoacalHostIp()
                        + ":5000/battdata?language=us_english&charset=cp936";
        sybase_ds.setJdbcUrl(connStr);
        */
        //sybase_ds.setJdbcUrl("jdbc:sybase:Tds:192.168.2.104:5000/battdata?language=us_english&charset=cp936");
        sybase_ds.setJdbcUrl("jdbc:sybase:Tds:192.168.48.129:5000/battdata?language=us_english&charset=cp936");
        sybase_ds.setUser("sa");
        sybase_ds.setPassword("");
        sybase_ds.setMaxPoolSize(3);
        sybase_ds.setMinPoolSize(1);
    }
    public Connection getConn()
    {
        Connection con = null;
        try {
            con = sybase_ds.getConnection();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return con;
    }
}
BattMonitor_ElectLock_ListenSystemForLinux/src/com/version_inf/version_inf.txt
New file
@@ -0,0 +1,14 @@
线程监控程序
    用于监测各个启用的程序是否正常运行,以及监听禁用的程序时候后台运行
V1.103    at 2023-04-15
    1.修复自身程序服务重启后及一直重启自身服务
    2.添加log4j日志打印配置
V1.102
    1.兼容Windows和Linux系统运行
V1.101
    初始版本
BattMonitor_ElectLock_ListenSystemForLinux/src/main/main_FBS9100S_ListenSystem.java
New file
@@ -0,0 +1,131 @@
package main;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Date;
import java.util.TimeZone;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import com.base.Com;
import com.config.AppConfig;
import com.del.TmpFileUtil;
import com.listen.ListenSystem_Thread;
import com.sql.MysqlConnPool;
public class main_FBS9100S_ListenSystem {
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /*********************     下方设备只能选择一个          *******************************/
    public final static boolean is_app_for_cmcc_only = false;
    public final static boolean is_app_for_fbo_data_only = false;
    public final static boolean is_app_for_fbs_free_only = true;
    public final static boolean is_app_for_bpm7100_only = false;
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    /**************************************************************************/
    public final static boolean app_debug = false;
    public final static float m_VersionNum = (float) 1.103;
    public final static String m_Version = "Welcome To Use ListenSystem V" + m_VersionNum + " RC_20170505";
    /**************************************************************************/
    /**************************************************************************/
    public static int MysqlServer_Port = 3382;
    private static AppConfig m_AppConfig;
    private static MysqlConnPool GB_MysqlConnPool;
    private static Logger logger;
    static {
        System.setProperty("log4j.configurationFile", "log4j2_electlock_listensystem_x64.xml");
    //    System.setProperty("contextSelector", "org.apache.logging.log4j.core.async.AsyncLoggerContextSelector");
    }
    /*********************************************************************************************/
    /*********************************************************************************************/
    public static void main(String[] args) {
        logger = LogManager.getLogger(main_FBS9100S_ListenSystem.class);
        TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
        /*//BasicConfigurator.configure();*/
        String ver = m_Version;
        //System.out.println(ver+"%%%%%%%%%%%%%");
        logger.info("/****************************************************************");
        logger.info("*****************************************************************");
        logger.info("****************************************************************/");
        logger.info(ver);
        logger.info("ListenSystem Server Start At..."+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
        logger.info("Waiting For MySQL_FBSDEV Start ...");
        //创建config.xml文件
        m_AppConfig = new AppConfig();
        //等待MySQL服务启动
        checkingMySQLServerStart();
        /*********************************************************************************/
        ListenSystem_Thread thread = new ListenSystem_Thread(GB_MysqlConnPool);
        thread.start();
        Date last_time = new Date(0);
        /*********************************************************************************/
        while(true) {
            try {
                Thread.sleep(2000);
                Date now = new Date();
                long timelong = (now.getTime()-last_time.getTime())/1000;
                if(timelong > 24*3600) {
                    //每天删除一次临时文件e4j
                    TmpFileUtil.delTmpFile();
                    last_time = now;
                }
                //logger.trace("GB_MysqlConnPool BusyConnCnt: " + GB_MysqlConnPool.getNumBusyConnections()
                //            + ", IdleConnCnt: " + GB_MysqlConnPool.getNumIdleConnections());
                Thread.sleep(2000);
            } catch (Exception e) {
                logger.error(e.toString(), e);
            }
        }
    }
    public static void checkingMySQLServerStart(){
        //MysqlServer_Port = 3306;
        logger.info("IP:"+m_AppConfig.getSqlServerIp()+"port"+m_AppConfig.getSqlServerPort());
        //初始化连接池中的各种参数信息        m_AppConfig.getMysqlServerIp()
        GB_MysqlConnPool = new MysqlConnPool(m_AppConfig.getSqlServerIp(), m_AppConfig.getSqlServerPort(), 5);
        while(true){
            Connection conn = null;
            try {
                logger.info("开始监测"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                conn =  GB_MysqlConnPool.getConn();
                if(conn != null){
                    logger.info("获取数据库连接成功");
                    break;
                }
                //System.out.println("监测完成"+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms));
                Thread.sleep(1000);
                //System.out.println("等待一次");
            } catch (Exception e) {
                logger.error("MySQL_FBSDEV not Start ...",e);
            } finally {
                if(conn != null) {
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        logger.error(e.toString(), e);
                    }
                }
            }
        }
    }
}