基于连接池+jsch框架的ssh2工具类实现远程命令执行,文件上传,文件下载及进度条等功能

  池化框架:common-pool

  ssh2协议客户端:jsch

maven依赖:

<!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>

涉及到的模块:

  服务器账号标识:ServerAccount

  连接池工厂类:SshConnectionPoolFactory

  连接池对象:GenericKeyedObjectPool

  进度条监视器:

ServerAccount类
/**
 * @author liangxiaohui
 * @version 1.0.0
 * @ClassName ServerAccount.java
 * @Description TODO
 * @createTime 2021年11月03日 16:17:00
 */
public class ServerAccount {
    private String host;
    private String port;
    private String userName;
    private String password;

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public int hashCode() {
        return (host+port+userName+password).hashCode();
    }

    @Override
    public boolean equals(Object obj) {
        ServerAccount serverAccount=(ServerAccount)obj;
        return (host+port+userName+password).equals(serverAccount.getHost()+serverAccount.getPort()+serverAccount.getUserName()+serverAccount.getPassword());
    }
}

 

连接池工具类:SshConnectionPoolUtil
连接池:GenericKeyedObjectPool
连接池内部工厂类:SshConnectionPoolFactory
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.apache.commons.pool.KeyedPoolableObjectFactory;
import org.apache.commons.pool.impl.GenericKeyedObjectPool;
import org.apache.log4j.Logger;

import java.util.Properties;

/**
 * @author liangxiaohui
 * @version 1.0.0
 * @ClassName ssh ConnectionPoolUtil.java
 * @Description 连接池工具类()
 */
public class SshConnectionPoolUtil {
    private static Logger logger = Logger.getLogger(SshConnectionPoolUtil.class);
    private static GenericKeyedObjectPool<ServerAccount, Session> pool;
    //连接超时时间
    private static final int connectionTimeOut = 60 * 60 * 12;
    private static final int poolMaxActive = 6;
    private static final int poolMaxIdle = 4;
    private static final int poolMinIdle = 1;
    private static final int poolMaxWait = -1;
    private static final int poolTimeBetweenEvictionRunsMillis = 30000;

    //初始化连接池
    protected static GenericKeyedObjectPool<ServerAccount, Session> getConnectionPool() {
        if (pool == null) {
            synchronized (SshConnectionPoolUtil.class) {
                if (pool == null) {
                    GenericKeyedObjectPool.Config config = new GenericKeyedObjectPool.Config();
                    config.lifo = false;
                    config.maxActive = poolMaxActive;//最大激活数
                    config.maxIdle = poolMaxIdle;//最大空闲数
                    config.minIdle = poolMinIdle;//最小空闲数
                    config.maxWait = poolMaxWait;//最大等待时间
                    config.testOnBorrow = true;//获取对象是否检测有效性
                    config.testOnReturn = true;//归还对象是否检测有效性
                    config.testWhileIdle = true;//不需要移除的对象是否检测有效性
                    config.timeBetweenEvictionRunsMillis = poolTimeBetweenEvictionRunsMillis;//检测时间间隔  单位ms
                    pool = new GenericKeyedObjectPool(new SshConnectionPoolFactory(), config);
                }
            }
        }
        return pool;
    }

    //通过连接信息获取连接实例
    public static Session getConnectionByServerAccount(ServerAccount serverAccount) throws Exception {
        return getConnectionPool().borrowObject(serverAccount);
    }

    //归还连接实例s
    public static void returnConnectionToPool(ServerAccount serverAccount, Session session) throws Exception {
        getConnectionPool().returnObject(serverAccount, session);
        getConnectionPool().clearOldest();
    }

    //扫描连接池中当前可用实例数量
    public static void countConnectionNumForPool() {
        logger.info("对象池当前激活实例总数量111>>>>:" + getConnectionPool().getNumActive());
        logger.info("对象池当前空闲实例总数量111>>>>:" + getConnectionPool().getNumIdle());
    }

    //----------------------------------------------------------------------------------------------------
    //--------------------------------------连接池初始化内部工厂类------------------------------------------
    //----------------------------------------------------------------------------------------------------

    /**
     * @author liangxiaohui
     * @version 1.0.0
     * @ClassName ConnectionPoolFactory.java
     * @Description 内部工厂类-对象池
     */
    public static class SshConnectionPoolFactory implements KeyedPoolableObjectFactory<ServerAccount, Session> {
        private static Logger logger = Logger.getLogger(SshConnectionPoolFactory.class);
        @Override
        public Session makeObject(ServerAccount key){
            Properties properties = new Properties();
            properties.put("StrictHostKeyChecking", "no");
            JSch jSch = new JSch();
            Session session = null;
            try {
                session = jSch.getSession(key.getUserName(), key.getHost(), Integer.parseInt(key.getPort()));
                session.setPassword(key.getPassword());
                session.setTimeout(connectionTimeOut);
                session.setConfig(properties);
                session.connect();
                logger.info("ssh连接池正在创建新的session连接实例..."+key+":"+session);
            } catch (JSchException e) {
                e.printStackTrace();
            }
            return session;
        }

        @Override
        public void destroyObject(ServerAccount key, Session obj){
            logger.info("ssh连接池中session连接实例正在被销毁..."+key+":"+obj);
            obj.disconnect();
        }

        @Override
        public boolean validateObject(ServerAccount key, Session obj) {
            if(obj.isConnected()){
                try {
                    obj.sendKeepAliveMsg();
                    return true;
                } catch (Exception e) {
                    logger.info("ssh连接池中session连接实例已失效..."+key+":"+obj+":"+e.getMessage());
                    return false;
                }
            }
            return false;
        }

        @Override
        public void activateObject(ServerAccount key, Session obj) {
            logger.info("ssh连接池:正在获取session连接实例..."+key+":"+obj);
        }

        @Override
        public void passivateObject(ServerAccount key, Session obj) {
            logger.info("ssh连接池:正在归还session连接实例..."+key+":"+obj);
        }
    }
}

  进度条监控器:TransFileProgressMonitor

import com.jcraft.jsch.SftpProgressMonitor;
import org.apache.log4j.Logger;

/**
 * @author liangxiaohui
 * @version 1.0.0
 * @ClassName TransFileProgressMonitor.java
 * @Description 文件传输监控器
 * @createTime 2021年11月05日 10:48:00
 */
public class TransFileProgressMonitor implements SftpProgressMonitor {
    private static Logger logger = Logger.getLogger(TransFileProgressMonitor.class);
    private long transfered;//已传输大小
    private long totalSize;//文件总大小
    private String filename;//文件名
    private String dest;//目标文件
    private String status;//传输状态  -2:未开始   -1:传输中    0:完成
    private boolean printProgress;
    private long startTimeStemp=0L;
    private long timeOut=60; //超时时间
    private String type;//传输类型,上传:put   下载:get
    private boolean isSuccess=false;
    //监控器构造函数
    public TransFileProgressMonitor(String fileName,long fileSize,boolean printProgress,long timeOut) {
        this.filename=fileName;
        this.totalSize=fileSize;
        this.printProgress=printProgress;
        this.timeOut=timeOut;
        this.type="PUT";
    }
    //监控器构造函数
    public TransFileProgressMonitor(boolean printProgress,long timeOut) {
        this.printProgress=printProgress;
        this.timeOut=timeOut;
        this.type="GET";
    }

    @Override
    //传输进度更新钩子函数
    public boolean count(long count) {
        status="-1";
        transfered = transfered + count;
        if(printProgress){
            printTransProgressOnConsole();
        }
        return true;
    }

    @Override
    //传输任务完成后钩子函数
    public void end() {
        this.status="0";
        isSuccess=(transfered==totalSize);
        System.out.println("\nTransferring done. > saved to:"+dest);
    }

    @Override
    //传输任务初始化钩子函数
    public void init(int op, String src, String dest, long max) {
        this.status="-2";
        if(this.type.equals("GET")){
            this.totalSize=max;
            this.filename=src;
        }
        this.dest=dest;
        System.out.println("Transferring begin.");
        System.out.println("Trans source:"+src);
        System.out.println("Trans dest:"+dest);
        System.out.println("Trans total size:"+max);
        startTimeStemp=System.currentTimeMillis();
    }
    //打印进度条
    protected void printTransProgressOnConsole(){
        long tp=Math.round((((double) transfered) / totalSize) * 100);
        StringBuilder sb= new StringBuilder(filename+">> 进度条:[");
        for (int i = 0; i <tp; i++) {
            sb.append("#");
        }
        for (int i = 0; i <100-tp; i++) {
            sb.append("-");
        }
        sb.append("] "+tp+"% ("+transfered+"/"+totalSize+")");
        System.out.print("\r"+sb.toString());
    }
    //判断传输是否已完成
    public boolean isDone(){
        return "0".equals(status);
    }
    //判断传输任务是否已超时
    public boolean isTimeOut(){
        return System.currentTimeMillis()-startTimeStemp>1000*timeOut;
    }
    public boolean isSuccess(){
        return isSuccess;
    }
}

 

server-ssh2工具类:ServerManager

import com.jcraft.jsch.*;
import org.apache.log4j.Logger;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

/**
 * @author liangxiaohui
 * @version 1.0.0
 * @ClassName ServerManager.java
 * @Description 服务器连接工具类
 */
public class ServerManager {
    private static Logger logger = Logger.getLogger(ServerManager.class);

    //获取默认连接对象
    public Session getDefaultServerConnectionFromPool() throws Exception {
        return null;
    }

    /**
     * 开启exec通道
     *
     * @param session Session
     * @return ChanelExec
     */
    public static ChannelExec openChannelExec(Session session) {
        ChannelExec channelExec = null;
        try {
            channelExec = (ChannelExec) session.openChannel("exec");
        } catch (JSchException e) {
            e.printStackTrace();
        }
        return channelExec;
    }

    /**
     * 关闭channelExec
     *
     * @param channelExec ChannelExec
     */
    public static void closeChannelExec(ChannelExec channelExec) {
        if (channelExec != null) {
            channelExec.disconnect();
        }
    }

    /**
     * 异步执行,不需要结果
     *
     * @param session Session
     * @param cmd     命令
     */
    public static int execCmdWithOutResult(Session session, String cmd) {
        ChannelExec channelExec = openChannelExec(session);
        channelExec.setCommand(cmd);
        try {
            channelExec.connect();
        } catch (JSchException e) {
            e.printStackTrace();
        }
        int status = channelExec.getExitStatus();
        closeChannelExec(channelExec);
        return status;
    }

    /**
     * 同步执行,需要获取执行完的结果
     *
     * @param session Session
     * @param cmd     命令
     * @return 结果
     */
    public static String execCmdWithResult(Session session, String cmd) {
        System.out.println("获取连接....");
        ChannelExec channelExec = openChannelExec(session);
        channelExec.setCommand(cmd);
        String result = null;
        try {
            channelExec.setInputStream(null);
            channelExec.setErrStream(System.err);
            InputStream in = channelExec.getInputStream();
            channelExec.connect();
            byte[] tmp = new byte[1024];
            while (true) {
                while (in.available() > 0) {
                    int i = in.read(tmp, 0, 1024);
                    if (i < 0)
                        break;
                    result = new String(tmp, 0, i);
                }
                if (channelExec.isClosed()) {
                    System.out.println("exit-status: " + channelExec.getExitStatus());
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (Exception ee) {
                }
            }
            channelExec.disconnect();
            System.out.println("DONE");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

    //下载文件
    public static int fetchFile(Session session, String sourceDir, String destDir) {
        ChannelSftp channelSftp = null;
        int result = -1;
        try {
            channelSftp = (ChannelSftp) session.openChannel("sftp");
            channelSftp.connect();
            TransFileProgressMonitor p = new TransFileProgressMonitor(true, 120);
            channelSftp.get(sourceDir, destDir, p);
            while ((!p.isDone() && !p.isTimeOut())) {
                Thread.sleep(2000);
            }
            if(p.isSuccess()){
                result=0;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            channelSftp.quit();
            channelSftp.exit();
            if (channelSftp != null && !channelSftp.isClosed()){
                channelSftp.disconnect();
            }
        }
        return result;
    }

    //上传文件
    public static int uploadFile(Session session, File sourceFile, String targetDir) {
        ChannelSftp channelSftp = null;
        int result = -1;
        try {
            Channel channel = session.openChannel("sftp");
            channel.connect();
            channelSftp = (ChannelSftp) channel;
            channelSftp.cd(targetDir);
            TransFileProgressMonitor p = new TransFileProgressMonitor(sourceFile.getName(), sourceFile.length(), true, 120);
            channelSftp.put(new FileInputStream(sourceFile), sourceFile.getName(), p);
            while ((!p.isDone() && !p.isTimeOut())) {
                Thread.sleep(2000);
            }
            if(p.isSuccess()){
                result=0;
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally {
            channelSftp.quit();
            channelSftp.exit();
            if (channelSftp != null && !channelSftp.isClosed()){
                channelSftp.disconnect();
            }
        }
        return result;

    }
}

 

junit测试类:

import com.jcraft.jsch.Session;

import java.io.File;

/**
 * @author liangxiaohui
 * @version 1.0.0
 * @ClassName ServerUtilsTest.java
 * @Description TODO
 * @createTime 2021年11月05日 14:47:00
 */
public class ServerUtilsTest {
    public static void main(String[] args) {
        try {
            ServerAccount server = new ServerAccount();
            server.setHost("192.168.2.71");
            server.setPort("22");
            server.setUserName("root");
            server.setPassword("hduap001");
            try {
                Session session = SshConnectionPoolUtil.getConnectionByServerAccount(server);
                System.out.println(Thread.currentThread().getName() + "session:" + session);
                File file = new File("E:\\work\\test.txt");
                //上传文件测试
//                int result = ServerManager.uploadFile(session, file, "/test");
//                System.out.println("resukt"+result);
//                if(0==result){
//                    System.out.println("upload....success");
//                }else{
//                    System.out.println("upload....failed");
//                }
                //下载文件测试

                int result = ServerManager.fetchFile(session, "/test/test.txt", "E:\\work\\");
                if (0 == result) {
                    System.out.println("down0....success");
                } else {
                    System.out.println("down0....failed");
                }

                int result1 = ServerManager.fetchFile(session, "/logs/spring.log", "E:\\work\\");
                if (0 == result1) {
                    System.out.println("down1....success");
                } else {
                    System.out.println("down1....failed");
                }

                int result2 = ServerManager.fetchFile(session, "/logs/spring.log.2021-10-29.0.gz", "E:\\work\\");
                if (0 == result2) {
                    System.out.println("down2....success");
                } else {
                    System.out.println("down2....failed");
                }
                SshConnectionPoolUtil.countConnectionNumForPool();
                SshConnectionPoolUtil.returnConnectionToPool(server, session);
            } catch (Exception e) {
                e.printStackTrace();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }


    }


}

 

测试结果:

D:\workstation\jdk\bin\java.exe -javaagent:D:\idea\idea\lib\idea_rt.jar=55821:D:\idea\idea\bin -Dfile.encoding=UTF-8 -classpath D:\workstation\jdk\jre\lib\charsets.jar;D:\workstation\jdk\jre\lib\deploy.jar;D:\workstation\jdk\jre\lib\ext\access-bridge-64.jar;D:\workstation\jdk\jre\lib\ext\cldrdata.jar;D:\workstation\jdk\jre\lib\ext\dnsns.jar;D:\workstation\jdk\jre\lib\ext\jaccess.jar;D:\workstation\jdk\jre\lib\ext\jfxrt.jar;D:\workstation\jdk\jre\lib\ext\localedata.jar;D:\workstation\jdk\jre\lib\ext\nashorn.jar;D:\workstation\jdk\jre\lib\ext\sunec.jar;D:\workstation\jdk\jre\lib\ext\sunjce_provider.jar;D:\workstation\jdk\jre\lib\ext\sunmscapi.jar;D:\workstation\jdk\jre\lib\ext\sunpkcs11.jar;D:\workstation\jdk\jre\lib\ext\zipfs.jar;D:\workstation\jdk\jre\lib\javaws.jar;D:\workstation\jdk\jre\lib\jce.jar;D:\workstation\jdk\jre\lib\jfr.jar;D:\workstation\jdk\jre\lib\jfxswt.jar;D:\workstation\jdk\jre\lib\jsse.jar;D:\workstation\jdk\jre\lib\management-agent.jar;D:\workstation\jdk\jre\lib\plugin.jar;D:\workstation\jdk\jre\lib\resources.jar;D:\workstation\jdk\jre\lib\rt.jar;D:\hdr-console-new\hdr-data-center-console\hdr-data-center-console-dwd\target\test-classes;D:\hdr-console-new\hdr-data-center-console\hdr-data-center-console-dwd\target\classes;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-data-jpa\2.3.4.RELEASE\spring-boot-starter-data-jpa-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\jakarta\transaction\jakarta.transaction-api\1.3.3\jakarta.transaction-api-1.3.3.jar;D:\workstation\nexus\nexus\nexus\jakarta\persistence\jakarta.persistence-api\2.2.3\jakarta.persistence-api-2.2.3.jar;D:\workstation\nexus\nexus\nexus\org\hibernate\hibernate-core\5.4.21.Final\hibernate-core-5.4.21.Final.jar;D:\workstation\nexus\nexus\nexus\org\jboss\logging\jboss-logging\3.4.1.Final\jboss-logging-3.4.1.Final.jar;D:\workstation\nexus\nexus\nexus\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;D:\workstation\nexus\nexus\nexus\net\bytebuddy\byte-buddy\1.10.14\byte-buddy-1.10.14.jar;D:\workstation\nexus\nexus\nexus\antlr\antlr\2.7.7\antlr-2.7.7.jar;D:\workstation\nexus\nexus\nexus\org\jboss\jandex\2.1.3.Final\jandex-2.1.3.Final.jar;D:\workstation\nexus\nexus\nexus\org\dom4j\dom4j\2.1.3\dom4j-2.1.3.jar;D:\workstation\nexus\nexus\nexus\org\hibernate\common\hibernate-commons-annotations\5.1.0.Final\hibernate-commons-annotations-5.1.0.Final.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jaxb\jaxb-runtime\2.3.3\jaxb-runtime-2.3.3.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jaxb\txw2\2.3.3\txw2-2.3.3.jar;D:\workstation\nexus\nexus\nexus\com\sun\istack\istack-commons-runtime\3.0.11\istack-commons-runtime-3.0.11.jar;D:\workstation\nexus\nexus\nexus\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-jpa\2.3.4.RELEASE\spring-data-jpa-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-commons\2.3.4.RELEASE\spring-data-commons-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-orm\5.2.9.RELEASE\spring-orm-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-tx\5.2.9.RELEASE\spring-tx-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-aspects\5.2.9.RELEASE\spring-aspects-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-jdbc\2.3.4.RELEASE\spring-boot-starter-jdbc-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\zaxxer\HikariCP\3.4.5\HikariCP-3.4.5.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-jdbc\5.2.9.RELEASE\spring-jdbc-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-aop\2.3.4.RELEASE\spring-boot-starter-aop-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-aop\5.2.9.RELEASE\spring-aop-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\aspectj\aspectjweaver\1.9.6\aspectjweaver-1.9.6.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-context-support\5.2.9.RELEASE\spring-context-support-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-beans\5.2.9.RELEASE\spring-beans-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-context\5.2.9.RELEASE\spring-context-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-expression\5.2.9.RELEASE\spring-expression-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-core\5.2.9.RELEASE\spring-core-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-jcl\5.2.9.RELEASE\spring-jcl-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\quartz-scheduler\quartz\2.3.2\quartz-2.3.2.jar;D:\workstation\nexus\nexus\nexus\com\mchange\mchange-commons-java\0.2.15\mchange-commons-java-0.2.15.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\slf4j-api\1.7.30\slf4j-api-1.7.30.jar;D:\workstation\nexus\nexus\nexus\org\quartz-scheduler\quartz-jobs\2.3.2\quartz-jobs-2.3.2.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls\2.10.0\jxls-2.10.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-jexl3\3.1\commons-jexl3-3.1.jar;D:\workstation\nexus\nexus\nexus\commons-beanutils\commons-beanutils\1.9.4\commons-beanutils-1.9.4.jar;D:\workstation\nexus\nexus\nexus\commons-collections\commons-collections\3.2.2\commons-collections-3.2.2.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\jcl-over-slf4j\1.7.30\jcl-over-slf4j-1.7.30.jar;D:\workstation\nexus\nexus\nexus\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-poi\2.10.0\jxls-poi-2.10.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi\4.1.2\poi-4.1.2.jar;D:\workstation\nexus\nexus\nexus\commons-codec\commons-codec\1.14\commons-codec-1.14.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;D:\workstation\nexus\nexus\nexus\com\zaxxer\SparseBitSet\1.2\SparseBitSet-1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi-ooxml\4.1.2\poi-ooxml-4.1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\poi\poi-ooxml-schemas\4.1.2\poi-ooxml-schemas-4.1.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\xmlbeans\xmlbeans\3.1.0\xmlbeans-3.1.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-compress\1.19\commons-compress-1.19.jar;D:\workstation\nexus\nexus\nexus\com\github\virtuald\curvesapi\1.06\curvesapi-1.06.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-jexcel\1.0.9\jxls-jexcel-1.0.9.jar;D:\workstation\nexus\nexus\nexus\net\sourceforge\jexcelapi\jxl\2.6.10\jxl-2.6.10.jar;D:\workstation\nexus\nexus\nexus\org\jxls\jxls-reader\2.0.6\jxls-reader-2.0.6.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-digester3\3.2\commons-digester3-3.2-with-deps.jar;D:\workstation\nexus\nexus\nexus\cglib\cglib\2.2.2\cglib-2.2.2.jar;D:\workstation\nexus\nexus\nexus\asm\asm\3.3.1\asm-3.3.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-jexl\2.1.1\commons-jexl-2.1.1.jar;D:\workstation\nexus\nexus\nexus\com\alibaba\fastjson\1.2.47\fastjson-1.2.47.jar;D:\workstation\nexus\nexus\nexus\com\alibaba\druid\1.1.14\druid-1.1.14.jar;D:\workstation\nexus\nexus\nexus\mysql\mysql-connector-java\5.1.37\mysql-connector-java-5.1.37.jar;D:\workstation\nexus\nexus\nexus\com\microsoft\sqlserver\sqljdbc4\3.0\sqljdbc4-3.0.jar;D:\workstation\nexus\nexus\nexus\com\oracle\ojdbc\6\ojdbc-6.jar;D:\workstation\nexus\nexus\nexus\org\postgresql\postgresql\42.1.4\postgresql-42.1.4.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-pool2\2.3\commons-pool2-2.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-jdbc\1.1.0\hive-jdbc-1.1.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-common\1.1.0\hive-common-1.1.0.jar;D:\workstation\nexus\nexus\nexus\commons-cli\commons-cli\1.2\commons-cli-1.2.jar;D:\workstation\nexus\nexus\nexus\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\workstation\nexus\nexus\nexus\log4j\apache-log4j-extras\1.2.17\apache-log4j-extras-1.2.17.jar;D:\workstation\nexus\nexus\nexus\org\apache\ant\ant\1.9.1\ant-1.9.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\ant\ant-launcher\1.9.1\ant-launcher-1.9.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-service\1.1.0\hive-service-1.1.0.jar;D:\workstation\nexus\nexus\nexus\net\sf\jpam\jpam\1.1\jpam-1.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\thrift\libfb303\0.9.2\libfb303-0.9.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-serde\1.1.0\hive-serde-1.1.0.jar;D:\workstation\nexus\nexus\nexus\com\google\code\findbugs\jsr305\3.0.0\jsr305-3.0.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\avro\avro\1.7.5\avro-1.7.5.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar;D:\workstation\nexus\nexus\nexus\com\thoughtworks\paranamer\paranamer\2.3\paranamer-2.3.jar;D:\workstation\nexus\nexus\nexus\org\xerial\snappy\snappy-java\1.0.5\snappy-java-1.0.5.jar;D:\workstation\nexus\nexus\nexus\net\sf\opencsv\opencsv\2.3\opencsv-2.3.jar;D:\workstation\nexus\nexus\nexus\com\twitter\parquet-hadoop-bundle\1.6.0rc3\parquet-hadoop-bundle-1.6.0rc3.jar;D:\workstation\nexus\nexus\nexus\org\apache\hive\hive-metastore\1.1.0\hive-metastore-1.1.0.jar;D:\workstation\nexus\nexus\nexus\com\jolbox\bonecp\0.8.0.RELEASE\bonecp-0.8.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\apache\derby\derby\10.14.2.0\derby-10.14.2.0.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-api-jdo\3.2.6\datanucleus-api-jdo-3.2.6.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-core\3.2.10\datanucleus-core-3.2.10.jar;D:\workstation\nexus\nexus\nexus\org\datanucleus\datanucleus-rdbms\3.2.9\datanucleus-rdbms-3.2.9.jar;D:\workstation\nexus\nexus\nexus\commons-pool\commons-pool\1.6\commons-pool-1.6.jar;D:\workstation\nexus\nexus\nexus\commons-dbcp\commons-dbcp\1.4\commons-dbcp-1.4.jar;D:\workstation\nexus\nexus\nexus\javax\jdo\jdo-api\3.0.1\jdo-api-3.0.1.jar;D:\workstation\nexus\nexus\nexus\javax\transaction\jta\1.1\jta-1.1.jar;D:\workstation\nexus\nexus\nexus\org\antlr\antlr-runtime\3.4\antlr-runtime-3.4.jar;D:\workstation\nexus\nexus\nexus\org\antlr\stringtemplate\3.2.1\stringtemplate-3.2.1.jar;D:\workstation\nexus\nexus\nexus\commons-logging\commons-logging\1.1.3\commons-logging-1.1.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\httpcomponents\httpclient\4.5.12\httpclient-4.5.12.jar;D:\workstation\nexus\nexus\nexus\org\apache\httpcomponents\httpcore\4.4.13\httpcore-4.4.13.jar;D:\workstation\nexus\nexus\nexus\org\apache\thrift\libthrift\0.9.2\libthrift-0.9.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\zookeeper\zookeeper\3.4.6\zookeeper-3.4.6.jar;D:\workstation\nexus\nexus\nexus\jline\jline\0.9.94\jline-0.9.94.jar;D:\workstation\nexus\nexus\nexus\io\netty\netty\3.7.0.Final\netty-3.7.0.Final.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-framework\2.6.0\curator-framework-2.6.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-client\2.6.0\curator-client-2.6.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger-ui\2.7.0\springfox-swagger-ui-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spring-web\2.7.0\springfox-spring-web-2.7.0.jar;D:\workstation\nexus\nexus\nexus\org\reflections\reflections\0.9.11\reflections-0.9.11.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger2\2.7.0\springfox-swagger2-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\swagger\swagger-annotations\1.5.13\swagger-annotations-1.5.13.jar;D:\workstation\nexus\nexus\nexus\io\swagger\swagger-models\1.5.13\swagger-models-1.5.13.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-annotations\2.11.2\jackson-annotations-2.11.2.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spi\2.7.0\springfox-spi-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-core\2.7.0\springfox-core-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-schema\2.7.0\springfox-schema-2.7.0.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-swagger-common\2.7.0\springfox-swagger-common-2.7.0.jar;D:\workstation\nexus\nexus\nexus\com\google\guava\guava\18.0\guava-18.0.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\classmate\1.5.1\classmate-1.5.1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\mapstruct\mapstruct\1.1.0.Final\mapstruct-1.1.0.Final.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\common-hbase-jar\0.0.5-SNAPSHOT\common-hbase-jar-0.0.5-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-client\1.2.0-cdh5.14.2\hbase-client-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-annotations\1.2.0-cdh5.14.2\hbase-annotations-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-common\1.2.0-cdh5.14.2\hbase-common-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-core\2.6.0-mr1-cdh5.14.2\hadoop-core-2.6.0-mr1-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\hsqldb\hsqldb\1.8.0.10\hsqldb-1.8.0.10.jar;D:\workstation\nexus\nexus\nexus\org\apache\hbase\hbase-protocol\1.2.0-cdh5.14.2\hbase-protocol-1.2.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\commons-io\commons-io\2.4\commons-io-2.4.jar;D:\workstation\nexus\nexus\nexus\com\google\protobuf\protobuf-java\2.5.0\protobuf-java-2.5.0.jar;D:\workstation\nexus\nexus\nexus\io\netty\netty-all\4.1.52.Final\netty-all-4.1.52.Final.jar;D:\workstation\nexus\nexus\nexus\org\apache\htrace\htrace-core\3.2.0-incubating\htrace-core-3.2.0-incubating.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-mapper-asl\1.8.8\jackson-mapper-asl-1.8.8.jar;D:\workstation\nexus\nexus\nexus\org\jruby\jcodings\jcodings\1.0.8\jcodings-1.0.8.jar;D:\workstation\nexus\nexus\nexus\org\jruby\joni\joni\2.1.2\joni-2.1.2.jar;D:\workstation\nexus\nexus\nexus\com\yammer\metrics\metrics-core\2.2.0\metrics-core-2.2.0.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-common\2.6.0-cdh5.14.2\hadoop-common-2.6.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\xmlenc\xmlenc\0.52\xmlenc-0.52.jar;D:\workstation\nexus\nexus\nexus\commons-httpclient\commons-httpclient\3.1\commons-httpclient-3.1.jar;D:\workstation\nexus\nexus\nexus\commons-net\commons-net\3.1\commons-net-3.1.jar;D:\workstation\nexus\nexus\nexus\com\sun\jersey\jersey-core\1.9\jersey-core-1.9.jar;D:\workstation\nexus\nexus\nexus\com\sun\jersey\jersey-json\1.9\jersey-json-1.9.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jettison\jettison\1.1\jettison-1.1.jar;D:\workstation\nexus\nexus\nexus\com\sun\xml\bind\jaxb-impl\2.2.3-1\jaxb-impl-2.2.3-1.jar;D:\workstation\nexus\nexus\nexus\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;D:\workstation\nexus\nexus\nexus\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-jaxrs\1.8.3\jackson-jaxrs-1.8.3.jar;D:\workstation\nexus\nexus\nexus\org\codehaus\jackson\jackson-xc\1.8.3\jackson-xc-1.8.3.jar;D:\workstation\nexus\nexus\nexus\commons-el\commons-el\1.0\commons-el-1.0.jar;D:\workstation\nexus\nexus\nexus\net\java\dev\jets3t\jets3t\0.9.0\jets3t-0.9.0.jar;D:\workstation\nexus\nexus\nexus\com\jamesmurty\utils\java-xmlbuilder\0.4\java-xmlbuilder-0.4.jar;D:\workstation\nexus\nexus\nexus\commons-configuration\commons-configuration\1.6\commons-configuration-1.6.jar;D:\workstation\nexus\nexus\nexus\commons-digester\commons-digester\1.8\commons-digester-1.8.jar;D:\workstation\nexus\nexus\nexus\commons-beanutils\commons-beanutils-core\1.8.0\commons-beanutils-core-1.8.0.jar;D:\workstation\nexus\nexus\nexus\com\google\code\gson\gson\2.8.6\gson-2.8.6.jar;D:\workstation\nexus\nexus\nexus\org\apache\curator\curator-recipes\2.7.1\curator-recipes-2.7.1.jar;D:\workstation\nexus\nexus\nexus\org\apache\htrace\htrace-core4\4.0.1-incubating\htrace-core4-4.0.1-incubating.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-annotations\2.6.0-cdh5.14.2\hadoop-annotations-2.6.0-cdh5.14.2.jar;D:\workstation\jdk\lib\tools.jar;D:\workstation\nexus\nexus\nexus\org\apache\hadoop\hadoop-auth\2.6.0-cdh5.14.2\hadoop-auth-2.6.0-cdh5.14.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\server\apacheds-kerberos-codec\2.0.0-M15\apacheds-kerberos-codec-2.0.0-M15.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\server\apacheds-i18n\2.0.0-M15\apacheds-i18n-2.0.0-M15.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\api\api-asn1-api\1.0.0-M20\api-asn1-api-1.0.0-M20.jar;D:\workstation\nexus\nexus\nexus\org\apache\directory\api\api-util\1.0.0-M20\api-util-1.0.0-M20.jar;D:\workstation\nexus\nexus\nexus\com\github\stephenc\findbugs\findbugs-annotations\1.3.9-1\findbugs-annotations-1.3.9-1.jar;D:\workstation\nexus\nexus\nexus\junit\junit\4.13\junit-4.13.jar;D:\workstation\nexus\nexus\nexus\org\hamcrest\hamcrest-core\2.2\hamcrest-core-2.2.jar;D:\workstation\nexus\nexus\nexus\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\workstation\nexus\nexus\nexus\ch\ethz\ganymed\ganymed-ssh2\build210\ganymed-ssh2-build210.jar;D:\workstation\nexus\nexus\nexus\com\jcraft\jsch\0.1.54\jsch-0.1.54.jar;D:\workstation\nexus\nexus\nexus\org\jenkins-ci\trilead-ssh2\build-217-jenkins-11\trilead-ssh2-build-217-jenkins-11.jar;D:\workstation\nexus\nexus\nexus\net\i2p\crypto\eddsa\0.2.0\eddsa-0.2.0.jar;D:\workstation\nexus\nexus\nexus\org\connectbot\jbcrypt\jbcrypt\1.0.0\jbcrypt-1.0.0.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-boot-starter\2.0.8\knife4j-spring-boot-starter-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-boot-autoconfigure\2.0.8\knife4j-spring-boot-autoconfigure-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring\2.0.8\knife4j-spring-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-annotations\2.0.8\knife4j-annotations-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-core\2.0.8\knife4j-core-2.0.8.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-bean-validators\2.10.5\springfox-bean-validators-2.10.5.jar;D:\workstation\nexus\nexus\nexus\io\springfox\springfox-spring-webmvc\2.10.5\springfox-spring-webmvc-2.10.5.jar;D:\workstation\nexus\nexus\nexus\com\github\xiaoymin\knife4j-spring-ui\2.0.8\knife4j-spring-ui-2.0.8.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-web\0.5.22-SNAPSHOT\hdr-common-web-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-boot-starter\3.4.0\mybatis-plus-boot-starter-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus\3.4.0\mybatis-plus-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-extension\3.4.0\mybatis-plus-extension-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-core\3.4.0\mybatis-plus-core-3.4.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\mybatis-plus-annotation\3.4.0\mybatis-plus-annotation-3.4.0.jar;D:\workstation\nexus\nexus\nexus\org\mybatis\mybatis\3.5.5\mybatis-3.5.5.jar;D:\workstation\nexus\nexus\nexus\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-security\0.5.22-SNAPSHOT\hdr-common-security-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-security\2.3.4.RELEASE\spring-boot-starter-security-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-config\5.3.4.RELEASE\spring-security-config-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-web\5.3.4.RELEASE\spring-security-web-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\oauth\spring-security-oauth2\2.3.3.RELEASE\spring-security-oauth2-2.3.3.RELEASE.jar;D:\workstation\nexus\nexus\nexus\cn\hutool\hutool-all\5.6.3\hutool-all-5.6.3.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\hdr-common-core\0.5.22-SNAPSHOT\hdr-common-core-0.5.22-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-core\5.3.4.RELEASE\spring-security-core-5.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\security\spring-security-jwt\1.0.7.RELEASE\spring-security-jwt-1.0.7.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\bouncycastle\bcpkix-jdk15on\1.55\bcpkix-jdk15on-1.55.jar;D:\workstation\nexus\nexus\nexus\org\bouncycastle\bcprov-jdk15on\1.55\bcprov-jdk15on-1.55.jar;D:\workstation\nexus\nexus\nexus\io\jsonwebtoken\jjwt\0.9.0\jjwt-0.9.0.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-databind\2.11.2\jackson-databind-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\core\jackson-core\2.11.2\jackson-core-2.11.2.jar;D:\workstation\nexus\nexus\nexus\org\apache\commons\commons-lang3\3.1\commons-lang3-3.1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-data-redis\2.3.4.RELEASE\spring-boot-starter-data-redis-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-redis\2.3.4.RELEASE\spring-data-redis-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\data\spring-data-keyvalue\2.3.4.RELEASE\spring-data-keyvalue-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-oxm\5.2.9.RELEASE\spring-oxm-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\redis\clients\jedis\3.3.0\jedis-3.3.0.jar;D:\workstation\nexus\nexus\nexus\com\baomidou\dynamic-datasource-spring-boot-starter\3.3.2\dynamic-datasource-spring-boot-starter-3.3.2.jar;D:\workstation\nexus\nexus\nexus\com\goodwill\hdr\common-util\0.0.12-SNAPSHOT\common-util-0.0.12-SNAPSHOT.jar;D:\workstation\nexus\nexus\nexus\net\sf\json-lib\json-lib\2.4\json-lib-2.4-jdk15.jar;D:\workstation\nexus\nexus\nexus\net\sf\ezmorph\ezmorph\1.0.6\ezmorph-1.0.6.jar;D:\workstation\nexus\nexus\nexus\com\belerweb\pinyin4j\2.5.0\pinyin4j-2.5.0.jar;D:\workstation\nexus\nexus\nexus\log4j\log4j\1.2.16\log4j-1.2.16.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter\2.3.4.RELEASE\spring-boot-starter-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot\2.3.4.RELEASE\spring-boot-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-autoconfigure\2.3.4.RELEASE\spring-boot-autoconfigure-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-logging\2.3.4.RELEASE\spring-boot-starter-logging-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\logging\log4j\log4j-to-slf4j\2.13.3\log4j-to-slf4j-2.13.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\logging\log4j\log4j-api\2.13.3\log4j-api-2.13.3.jar;D:\workstation\nexus\nexus\nexus\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;D:\workstation\nexus\nexus\nexus\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\workstation\nexus\nexus\nexus\org\yaml\snakeyaml\1.26\snakeyaml-1.26.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-web\2.3.4.RELEASE\spring-boot-starter-web-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-json\2.3.4.RELEASE\spring-boot-starter-json-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.11.2\jackson-datatype-jdk8-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.11.2\jackson-datatype-jsr310-2.11.2.jar;D:\workstation\nexus\nexus\nexus\com\fasterxml\jackson\module\jackson-module-parameter-names\2.11.2\jackson-module-parameter-names-2.11.2.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-tomcat\2.3.4.RELEASE\spring-boot-starter-tomcat-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\apache\tomcat\embed\tomcat-embed-core\9.0.38\tomcat-embed-core-9.0.38.jar;D:\workstation\nexus\nexus\nexus\org\glassfish\jakarta.el\3.0.3\jakarta.el-3.0.3.jar;D:\workstation\nexus\nexus\nexus\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.38\tomcat-embed-websocket-9.0.38.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-web\5.2.9.RELEASE\spring-web-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-webmvc\5.2.9.RELEASE\spring-webmvc-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-starter-test\2.3.4.RELEASE\spring-boot-starter-test-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-test\2.3.4.RELEASE\spring-boot-test-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\springframework\boot\spring-boot-test-autoconfigure\2.3.4.RELEASE\spring-boot-test-autoconfigure-2.3.4.RELEASE.jar;D:\workstation\nexus\nexus\nexus\com\jayway\jsonpath\json-path\2.4.0\json-path-2.4.0.jar;D:\workstation\nexus\nexus\nexus\net\minidev\json-smart\2.3\json-smart-2.3.jar;D:\workstation\nexus\nexus\nexus\net\minidev\accessors-smart\1.2\accessors-smart-1.2.jar;D:\workstation\nexus\nexus\nexus\org\ow2\asm\asm\5.0.4\asm-5.0.4.jar;D:\workstation\nexus\nexus\nexus\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\workstation\nexus\nexus\nexus\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\workstation\nexus\nexus\nexus\org\assertj\assertj-core\3.16.1\assertj-core-3.16.1.jar;D:\workstation\nexus\nexus\nexus\org\hamcrest\hamcrest\2.2\hamcrest-2.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter\5.6.2\junit-jupiter-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-api\5.6.2\junit-jupiter-api-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\apiguardian\apiguardian-api\1.1.0\apiguardian-api-1.1.0.jar;D:\workstation\nexus\nexus\nexus\org\opentest4j\opentest4j\1.2.0\opentest4j-1.2.0.jar;D:\workstation\nexus\nexus\nexus\org\junit\platform\junit-platform-commons\1.6.2\junit-platform-commons-1.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-params\5.6.2\junit-jupiter-params-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\jupiter\junit-jupiter-engine\5.6.2\junit-jupiter-engine-5.6.2.jar;D:\workstation\nexus\nexus\nexus\org\junit\platform\junit-platform-engine\1.6.2\junit-platform-engine-1.6.2.jar;D:\workstation\nexus\nexus\nexus\org\mockito\mockito-core\3.3.3\mockito-core-3.3.3.jar;D:\workstation\nexus\nexus\nexus\net\bytebuddy\byte-buddy-agent\1.10.14\byte-buddy-agent-1.10.14.jar;D:\workstation\nexus\nexus\nexus\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\workstation\nexus\nexus\nexus\org\mockito\mockito-junit-jupiter\3.3.3\mockito-junit-jupiter-3.3.3.jar;D:\workstation\nexus\nexus\nexus\org\skyscreamer\jsonassert\1.5.0\jsonassert-1.5.0.jar;D:\workstation\nexus\nexus\nexus\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\workstation\nexus\nexus\nexus\org\springframework\spring-test\5.2.9.RELEASE\spring-test-5.2.9.RELEASE.jar;D:\workstation\nexus\nexus\nexus\org\xmlunit\xmlunit-core\2.7.0\xmlunit-core-2.7.0.jar ServerUtilsTest
21/11/05 18:06:40 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池正在创建新的session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5
21/11/05 18:06:40 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池:正在获取session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5
mainsession:com.jcraft.jsch.Session@71a794e5
Transferring begin.
Trans source:/test/test.txt
Trans dest:E:\work\test.txt
Trans total size:628
/test/test.txt>> 进度条:[####################################################################################################] 100% (628/628)
Transferring done. > saved to:E:\work\test.txt
down0....success
Transferring begin.
Trans source:/logs/spring.log
Trans dest:E:\work\spring.log
Trans total size:3685476
/logs/spring.log>> 进度条:[####################################################################################################] 100% (3685476/3685476)
Transferring done. > saved to:E:\work\spring.log
down1....success
Transferring begin.
Trans source:/logs/spring.log.2021-10-29.0.gz
Trans dest:E:\work\spring.log.2021-10-29.0.gz
Trans total size:10547
/logs/spring.log.2021-10-29.0.gz>> 进度条:[####################################################################################################] 100% (10547/10547)
Transferring done. > saved to:E:\work\spring.log.2021-10-29.0.gz
down2....success
21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil: 对象池当前激活实例总数量111>>>>:1
21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil: 对象池当前空闲实例总数量111>>>>:0
21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池:正在归还session连接实例...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5
21/11/05 18:06:41 INFO ssh.SshConnectionPoolUtil$SshConnectionPoolFactory: ssh连接池中session连接实例正在被销毁...com.goodwill.hdr.dwd.util.connection.ssh.ServerAccount@5f6f9780:com.jcraft.jsch.Session@71a794e5

Process finished with exit code 0

 

转自:
https://www.cnblogs.com/yebanfengqi/p/15514620.html