Spring-Boot的classpath:iml设置与Resources Plugin

在Spring-Boot中,特别是.properties文件中,常常可以看到某些路径会以classpath开头:

mybatis.config-location = classpath:mybatis/mybatis-config.xml

这个classpath到底是什么?

对于一个编译过的Spring-Boot工程,会生成一个target文件夹,该文件夹下有多个子文件夹:

其中的classes子文件夹,就是classpath

Spring-Boot工程编译后,会按照配置,将生成的.class文件和各类资源文件放到classes文件夹下。同时配置也决定了是直接放到classes根目录,还是带有文件夹路径。

.   iml中的sourceFolder

Spring-Boot工程会将某些文件夹标记为<sourceFolder>。被<sourceFolder>所标记的文件夹会保留子文件夹结构,生成到classes文件夹下。默认的<sourceFolder>文件夹有3个,在工程根目录的XXX.iml文件中:
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />

即:src/main/java文件夹,src/main/resources文件夹,src/test/java文件夹。

这三个文件夹下的所有递归子文件,.java文件会被编译为.class文件。资源类文件直接复制过来。

虽然同为<sourceFolder>,但type却不同。资源类文件的type是java-resource

 

如图,可以看到:

  • source类资源,也就是源码文件夹,是蓝色。会将.java编译为.class,然后生成到target/classes目录下。若其下有资源类文件,忽略。
  • resources类资源,也就是资源文件夹,右下角带有多条黄色横线。会将其下所有子文件和文件都会被直接复制到target/classes文件夹下。若其下有.java文件,忽略。
  • test source类资源,也就是测试源码文件夹,是绿色。同source类资源。

这一点打开菜单File→Project Structure,选择Modules,右侧选择Sources,也能看到:

在这里可以直接添加删除不同的资源文件夹,与修改XXX.iml效果相同。

src/main/resources文件夹默认被设置为Resource Folders。因此该文件夹下所有的子文件和文件都会被直接复制到target/classes文件夹下。

这就是为什么放在src/main/resources文件夹根目录下的文件,可以用classpath:+名称来直接引用。

同理,若要引用的某个资源文件不在src/main/resources文件夹下,那么只需要将该资源文件所在的某一级父文件夹设置为Resource Folders,即可使用classpath:+路径+名称来访问。

总之,对于一个资源文件,只要确保其某一级父文件夹是Resource Folders(通过修改XXX.iml或直接打开上面的界面修改),那么就一定可以用classpath:+路径+名称来访问。

二.   Resources Plugin

Maven有个Resources Plugin插件,用于将指定目录的文件复制到指定的地址,作用类似<sourceFolder>标签。

不同的是,<sourceFolder>需要在XXX.iml中设置,而Resources Plugin是在pom.xml中设置。

可以这样理解:Resources Plugin就是<sourceFolder>的动态版本。

引入:

<build>
    <resources>
        <resource>
            <directory>
                ${basedir}/src/main/java/com/template/mapper
            </directory>
        </resource>
        <resource>
           <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>

其中:

  1. <resources>为主标签。其下有多个<resource>
  2. 对于每一个<resource>,都需要设置一个<directory>来指定来源。其默认值为${basedir}代表工程根目录,可以省略。
  3. <resource>对应地,用<targetPath>来指定输出目录。其默认值为${project.build.outputDirectory},代表classes文件夹,可以省略。
  4. <includes>标签用于筛选指定文件。可以是指定名称,或者指定类型。其格式为:
     
    <includes>
        <include>*.xml</include>
    </includes>

    一个<includes>下包含多个<include>标签,每个都可定义一个或一种文件。

    需要注意的是若没有使用通配符,<include>标签必须指定具体文件夹路径,且只会获取该文件夹下的直接子文件,不会获取多级子文件夹下的文件。

  5. <includes>对应地,<excludes>用于排除指定的文件。
  6. <filtering>标签用于设置是否替换文件中表达式的值。

综上,可以得知Resources Plugin是不对.java和资源文件作区分的。因此若没有使用<include>来指定某一类文件,是可以将.java文件也复制到classes文件夹下的。

另外,Resources Plugin会覆盖掉iml的设置。因此若使用Resources Plugin,则需要将src/main/resources路径也添加到这里。

 

修改iml的方式简单高效。而Resources Plugin更加灵活。因此对于资源文件分散程度较小的工程,可以采用iml的方式;对于资源文件分散程度较大的工程,推荐使用Resources Plugin。

package com.example.demo.config; import cn.hutool.json.JSONUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.converter.MappingJackson2MessageConverter; import org.springframework.messaging.converter.StringMessageConverter; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.messaging.simp.stomp.StompCommand; import org.springframework.messaging.simp.stomp.StompFrameHandler; import org.springframework.messaging.simp.stomp.StompHeaders; import org.springframework.messaging.simp.stomp.StompSession; import org.springframework.messaging.simp.stomp.StompSessionHandlerAdapter; import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; import org.springframework.stereotype.Service; import org.springframework.web.socket.client.standard.StandardWebSocketClient; import org.springframework.web.socket.messaging.WebSocketStompClient; import org.springframework.web.socket.sockjs.client.SockJsClient; import org.springframework.web.socket.sockjs.client.Transport; import org.springframework.web.socket.sockjs.client.WebSocketTransport; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; @Service public class StompClientSender { public StompClientSender(SimpMessagingTemplate messagingTemplate) { this.messagingTemplate = messagingTemplate; } @Autowired private SimpMessagingTemplate messagingTemplate; private final Map<String, StompSession> clientSessions = new ConcurrentHashMap<>(); private String userId; public void sendCommand(String command, String targetClient, String userId) { try { String sessionKey = targetClient + "#" + userId; StompSession session = clientSessions.computeIfAbsent(sessionKey, k -> connectToClient(targetClient,userId)); Map<String, String> requestMap = new HashMap<>(); requestMap.put("command", command); requestMap.put("host", targetClient); requestMap.put("userId", userId); String aaa = JSONUtil.toJsonStr(requestMap); session.send("/app/executeCommand", aaa); } catch (Exception e) { throw new RuntimeException("命令发送失败", e); } } private StompSession connectToClient(String clientAddress, String userId) { // 注意这里参数 userId List<Transport> transports = new ArrayList<>(); transports.add(new WebSocketTransport(new StandardWebSocketClient())); WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(transports)); stompClient.setMessageConverter(new StringMessageConverter()); stompClient.setTaskScheduler(new ConcurrentTaskScheduler()); CompletableFuture<StompSession> future = new CompletableFuture<>(); stompClient.connect("http://" + clientAddress + ":7788/ws-client", new StompSessionHandlerAdapter() { @Override public void afterConnected(StompSession session, StompHeaders headers) { String userTopic = "/topic/commandOutput/" + userId; session.subscribe(userTopic, new StompFrameHandler() { @Override public Type getPayloadType(StompHeaders headers) { return String.class; } @Override public void handleFrame(StompHeaders headers, Object payload) { String output = (String) payload; System.out.println("收到响应: " + output + ",转发至用户: " + userId); // 使用参数 userId messagingTemplate.convertAndSend("/topic/bToCommandOutput/fangpeiyuan", output); } }); future.complete(session); } @Override public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) { System.err.println("STOMP异常: " + exception.getMessage()); exception.printStackTrace(); future.completeExceptionally(exception); } }); try { return future.get(5, TimeUnit.SECONDS); } catch (Exception e) { throw new RuntimeException("连接小客户端超时", e); } } // private StompSession connectToClient(String clientAddress, String userId) { // List<Transport> transports = new ArrayList<>(); // transports.add(new WebSocketTransport(new StandardWebSocketClient())); // WebSocketStompClient stompClient = new WebSocketStompClient(new SockJsClient(transports)); // stompClient.setMessageConverter(new MappingJackson2MessageConverter()); // stompClient.setTaskScheduler(new ConcurrentTaskScheduler()); // // CompletableFuture<StompSession> future = new CompletableFuture<>(); // // stompClient.connect("http://" + clientAddress + ":7788/ws-client", new StompSessionHandlerAdapter() { // @Override // public void afterConnected(StompSession session, StompHeaders headers) { // // 关键修改:订阅用户专属主题 // String userTopic = "/topic/commandOutput/" + userId; // session.subscribe(userTopic, new StompFrameHandler() { // @Override // public Type getPayloadType(StompHeaders headers) { // return String.class; // } // // @Override // public void handleFrame(StompHeaders headers, Object payload) { // String output = (String) payload; // System.out.println("收到响应: " + output + ",转发至用户: " + userId); // // // 直接通过公共主题转发响应 // messagingTemplate.convertAndSend( // "/topic/bToCommandOutput/" + userId, // output // ); // } // }); // future.complete(session); // } // // @Override // public void handleException(StompSession session, StompCommand command, StompHeaders headers, byte[] payload, Throwable exception) { // future.completeExceptionally(exception); // } // // }); // // try { // // 使用get()方法并设置超时 // return future.get(5, TimeUnit.SECONDS); // } catch (Exception e) { // throw new RuntimeException("连接小客户端超时", e); // } // } }"C:\Program Files\Java\jdk1.8.0_301\bin\java.exe" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:55199,suspend=y,server=n -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -javaagent:D:\Idea-2021.2\plugins\java\lib\rt\debugger-agent.jar -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_301\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_301\jre\lib\rt.jar;E:\huanan_win\cmd_demo\my-cmd-back\target\classes;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-web\2.7.12\spring-boot-starter-web-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter\2.7.12\spring-boot-starter-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot\2.7.12\spring-boot-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-logging\2.7.12\spring-boot-starter-logging-2.7.12.jar;D:\apache-maven-3.6.3\repository\ch\qos\logback\logback-classic\1.2.12\logback-classic-1.2.12.jar;D:\apache-maven-3.6.3\repository\ch\qos\logback\logback-core\1.2.12\logback-core-1.2.12.jar;D:\apache-maven-3.6.3\repository\org\apache\logging\log4j\log4j-to-slf4j\2.17.2\log4j-to-slf4j-2.17.2.jar;D:\apache-maven-3.6.3\repository\org\apache\logging\log4j\log4j-api\2.17.2\log4j-api-2.17.2.jar;D:\apache-maven-3.6.3\repository\org\slf4j\jul-to-slf4j\1.7.36\jul-to-slf4j-1.7.36.jar;D:\apache-maven-3.6.3\repository\jakarta\annotation\jakarta.annotation-api\1.3.5\jakarta.annotation-api-1.3.5.jar;D:\apache-maven-3.6.3\repository\org\yaml\snakeyaml\1.30\snakeyaml-1.30.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-json\2.7.12\spring-boot-starter-json-2.7.12.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.13.5\jackson-datatype-jdk8-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.13.5\jackson-datatype-jsr310-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.13.5\jackson-module-parameter-names-2.13.5.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-tomcat\2.7.12\spring-boot-starter-tomcat-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-core\9.0.75\tomcat-embed-core-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-el\9.0.75\tomcat-embed-el-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\apache\tomcat\embed\tomcat-embed-websocket\9.0.75\tomcat-embed-websocket-9.0.75.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-web\5.3.27\spring-web-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-webmvc\5.3.27\spring-webmvc-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-aop\5.3.27\spring-aop-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-expression\5.3.27\spring-expression-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-websocket\2.7.12\spring-boot-starter-websocket-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\slf4j\slf4j-api\1.7.36\slf4j-api-1.7.36.jar;D:\apache-maven-3.6.3\repository\jakarta\xml\bind\jakarta.xml.bind-api\2.3.3\jakarta.xml.bind-api-2.3.3.jar;D:\apache-maven-3.6.3\repository\jakarta\activation\jakarta.activation-api\1.2.2\jakarta.activation-api-1.2.2.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-core\5.3.27\spring-core-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-jcl\5.3.27\spring-jcl-5.3.27.jar;D:\apache-maven-3.6.3\repository\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-generator\3.5.3.1\mybatis-plus-generator-3.5.3.1.jar;D:\apache-maven-3.6.3\repository\cn\hutool\hutool-all\5.4.5\hutool-all-5.4.5.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-ui\1.6.14\springdoc-openapi-ui-1.6.14.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-webmvc-core\1.6.14\springdoc-openapi-webmvc-core-1.6.14.jar;D:\apache-maven-3.6.3\repository\org\springdoc\springdoc-openapi-common\1.6.14\springdoc-openapi-common-1.6.14.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-core\2.2.7\swagger-core-2.2.7.jar;D:\apache-maven-3.6.3\repository\org\apache\commons\commons-lang3\3.12.0\commons-lang3-3.12.0.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.13.5\jackson-dataformat-yaml-2.13.5.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-annotations\2.2.7\swagger-annotations-2.2.7.jar;D:\apache-maven-3.6.3\repository\io\swagger\core\v3\swagger-models\2.2.7\swagger-models-2.2.7.jar;D:\apache-maven-3.6.3\repository\jakarta\validation\jakarta.validation-api\2.0.2\jakarta.validation-api-2.0.2.jar;D:\apache-maven-3.6.3\repository\org\webjars\swagger-ui\4.15.5\swagger-ui-4.15.5.jar;D:\apache-maven-3.6.3\repository\org\webjars\webjars-locator-core\0.50\webjars-locator-core-0.50.jar;D:\apache-maven-3.6.3\repository\io\github\classgraph\classgraph\4.8.149\classgraph-4.8.149.jar;D:\apache-maven-3.6.3\repository\mysql\mysql-connector-java\8.0.29\mysql-connector-java-8.0.29.jar;D:\apache-maven-3.6.3\repository\com\google\protobuf\protobuf-java\3.19.4\protobuf-java-3.19.4.jar;D:\apache-maven-3.6.3\repository\org\projectlombok\lombok\1.18.28\lombok-1.18.28.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-boot-starter\3.4.2\mybatis-plus-boot-starter-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus\3.4.2\mybatis-plus-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-extension\3.4.2\mybatis-plus-extension-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-core\3.4.2\mybatis-plus-core-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\baomidou\mybatis-plus-annotation\3.4.2\mybatis-plus-annotation-3.4.2.jar;D:\apache-maven-3.6.3\repository\com\github\jsqlparser\jsqlparser\4.0\jsqlparser-4.0.jar;D:\apache-maven-3.6.3\repository\org\mybatis\mybatis\3.5.6\mybatis-3.5.6.jar;D:\apache-maven-3.6.3\repository\org\mybatis\mybatis-spring\2.0.5\mybatis-spring-2.0.5.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-autoconfigure\2.7.12\spring-boot-autoconfigure-2.7.12.jar;D:\apache-maven-3.6.3\repository\org\springframework\boot\spring-boot-starter-jdbc\2.7.12\spring-boot-starter-jdbc-2.7.12.jar;D:\apache-maven-3.6.3\repository\com\zaxxer\HikariCP\4.0.3\HikariCP-4.0.3.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-jdbc\5.3.27\spring-jdbc-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-tx\5.3.27\spring-tx-5.3.27.jar;D:\apache-maven-3.6.3\repository\commons-io\commons-io\2.11.0\commons-io-2.11.0.jar;D:\apache-maven-3.6.3\repository\org\apache\commons\commons-compress\1.21\commons-compress-1.21.jar;D:\apache-maven-3.6.3\repository\org\tukaani\xz\1.9\xz-1.9.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-websocket\5.3.20\spring-websocket-5.3.20.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-context\5.3.27\spring-context-5.3.27.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-messaging\5.3.20\spring-messaging-5.3.20.jar;D:\apache-maven-3.6.3\repository\org\springframework\spring-beans\5.3.27\spring-beans-5.3.27.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-databind\2.13.4\jackson-databind-2.13.4.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-annotations\2.13.5\jackson-annotations-2.13.5.jar;D:\apache-maven-3.6.3\repository\com\fasterxml\jackson\core\jackson-core\2.13.5\jackson-core-2.13.5.jar;D:\Idea-2021.2\lib\idea_rt.jar" com.example.demo.DemoApplication Connected to the target VM, address: '127.0.0.1:55199', transport: 'socket' . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.7.12) 2025-06-24 16:22:34.447 INFO 9640 --- [ main] com.example.demo.DemoApplication : Starting DemoApplication using Java 1.8.0_301 on CYFOS01-31Q4Z03 with PID 9640 (E:\huanan_win\cmd_demo\my-cmd-back\target\classes started by fangpeiyuan in E:\huanan_win\cmd_demo\my-cmd-back) 2025-06-24 16:22:34.451 INFO 9640 --- [ main] com.example.demo.DemoApplication : No active profile set, falling back to 1 default profile: "default" 2025-06-24 16:22:35.460 INFO 9640 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8086 (http) 2025-06-24 16:22:35.467 INFO 9640 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2025-06-24 16:22:35.467 INFO 9640 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.75] 2025-06-24 16:22:35.715 INFO 9640 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2025-06-24 16:22:35.715 INFO 9640 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1223 ms _ _ |_ _ _|_. ___ _ | _ | | |\/|_)(_| | |_\ |_)||_|_\ / | 3.4.2 2025-06-24 16:22:40.397 INFO 9640 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8086 (http) with context path '' 2025-06-24 16:22:40.398 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Starting... 2025-06-24 16:22:40.399 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : BrokerAvailabilityEvent[available=true, SimpleBrokerMessageHandler [org.springframework.messaging.simp.broker.DefaultSubscriptionRegistry@14b8a751]] 2025-06-24 16:22:40.399 INFO 9640 --- [ main] o.s.m.s.b.SimpleBrokerMessageHandler : Started. 2025-06-24 16:22:40.407 INFO 9640 --- [ main] com.example.demo.DemoApplication : Started DemoApplication in 6.386 seconds (JVM running for 7.323) 2025-06-24 16:22:45.658 INFO 9640 --- [nio-8086-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet' 2025-06-24 16:22:45.658 INFO 9640 --- [nio-8086-exec-2] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' 2025-06-24 16:22:45.659 INFO 9640 --- [nio-8086-exec-2] o.s.web.servlet.DispatcherServlet : Completed initialization in 1 ms 收到响应: null,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service>dir,转发至用户: fangpeiyuan 收到响应: 卷的序列号是 5F45-660F,转发至用户: fangpeiyuan 收到响应: 驱动器 E 中的卷是 文档,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:52 12,516 by_remote_service.iml,转发至用户: fangpeiyuan 收到响应: 2025/06/06 16:39 <DIR> command-log,转发至用户: fangpeiyuan 收到响应: 2025/04/17 17:26 1,074 HELP.md,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 6,781 pom.xml,转发至用户: fangpeiyuan 收到响应: 2025/06/18 10:01 <DIR> python-package,转发至用户: fangpeiyuan 收到响应: 2025/06/24 16:20 <DIR> target,转发至用户: fangpeiyuan 收到响应: 2025/05/28 09:27 <DIR> src,转发至用户: fangpeiyuan 收到响应: 4 个文件 20,766 字节,转发至用户: fangpeiyuan 收到响应: 7 个目录 180,371,836,928 可用字节,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 <DIR> .,转发至用户: fangpeiyuan 收到响应: 2025/06/23 14:53 <DIR> ..,转发至用户: fangpeiyuan 收到响应: null,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service 的目录,转发至用户: fangpeiyuan 收到响应: 2025/04/17 17:26 395 .gitignore,转发至用户: fangpeiyuan 收到响应: 2025/06/24 16:18 <DIR> .idea,转发至用户: fangpeiyuan 收到响应: E:\huanan_win\cmd_demo\by_remote_service>,转发至用户: fangpeiyuan 收到响应: ⏹ 该命令执行已结束,转发至用户: fangpeiyuan STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) STOMP异常: null java.lang.NullPointerException at org.springframework.messaging.converter.AbstractMessageConverter.canConvertTo(AbstractMessageConverter.java:233) at org.springframework.messaging.converter.AbstractMessageConverter.toMessage(AbstractMessageConverter.java:197) at org.springframework.messaging.converter.CompositeMessageConverter.toMessage(CompositeMessageConverter.java:96) at org.springframework.messaging.core.AbstractMessageSendingTemplate.doConvert(AbstractMessageSendingTemplate.java:181) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:150) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:129) at org.springframework.messaging.core.AbstractMessageSendingTemplate.convertAndSend(AbstractMessageSendingTemplate.java:122) at com.example.demo.config.StompClientSender$1$1.handleFrame(StompClientSender.java:86) at org.springframework.messaging.simp.stomp.DefaultStompSession.invokeHandler(DefaultStompSession.java:471) at org.springframework.messaging.simp.stomp.DefaultStompSession.handleMessage(DefaultStompSession.java:432) at org.springframework.web.socket.messaging.WebSocketStompClient$WebSocketTcpConnectionHandlerAdapter.handleMessage(WebSocketStompClient.java:340) at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleMessage(WebSocketHandlerDecorator.java:75) at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleMessage(LoggingWebSocketHandlerDecorator.java:56) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleMessageFrame(AbstractClientSockJsSession.java:294) at org.springframework.web.socket.sockjs.client.AbstractClientSockJsSession.handleFrame(AbstractClientSockJsSession.java:230) at org.springframework.web.socket.sockjs.client.WebSocketTransport$ClientSockJsWebSocketHandler.handleTextMessage(WebSocketTransport.java:163) at org.springframework.web.socket.handler.AbstractWebSocketHandler.handleMessage(AbstractWebSocketHandler.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.handleTextMessage(StandardWebSocketHandlerAdapter.java:114) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.access$000(StandardWebSocketHandlerAdapter.java:43) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:85) at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter$3.onMessage(StandardWebSocketHandlerAdapter.java:82) at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:390) at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:484) at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:284) at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130) at org.apache.tomcat.websocket.WsFrameClient.processSocketRead(WsFrameClient.java:95) at org.apache.tomcat.websocket.WsFrameClient.resumeProcessing(WsFrameClient.java:208) at org.apache.tomcat.websocket.WsFrameClient.access$500(WsFrameClient.java:31) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.doResumeProcessing(WsFrameClient.java:186) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:161) at org.apache.tomcat.websocket.WsFrameClient$WsFrameClientCompletionHandler.completed(WsFrameClient.java:146) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126) at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:281) at sun.nio.ch.WindowsAsynchronousSocketChannelImpl$ReadTask.completed(WindowsAsynchronousSocketChannelImpl.java:579) at sun.nio.ch.Iocp$EventHandlerTask.run(Iocp.java:397) at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112) at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) at java.lang.Thread.run(Thread.java:748) 2025-06-24 16:23:36.518 INFO 9640 --- [MessageBroker-5] o.s.w.s.c.WebSocketMessageBrokerStats : WebSocketSession[1 current WS(0)-HttpStream(1)-HttpPoll(0), 2 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(1)-CONNECTED(1)-DISCONNECT(1)], stompBrokerRelay[null], inboundChannel[pool size = 12, active threads = 0, queued tasks = 0, completed tasks = 15], outboundChannel[pool size = 12, active threads = 0, queued tasks = 0, completed tasks = 22], sockJsScheduler[pool size = 6, active threads = 1, queued tasks = 2, completed tasks = 12]
06-25
报错"D:\Program Files\Java\jdk1.8.0_152\bin\java.exe" -XX:TieredStopAtLevel=1 -noverify -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=51960:D:\Program Files\JetBrains\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files\Java\jdk1.8.0_152\jre\lib\charsets.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\deploy.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\access-bridge-64.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\cldrdata.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\dnsns.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jaccess.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\jfxrt.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\localedata.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\nashorn.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunec.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunjce_provider.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunmscapi.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\sunpkcs11.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\ext\zipfs.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\javaws.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\jce.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\jfr.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\jfxswt.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\jsse.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\management-agent.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\plugin.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\resources.jar;D:\Program Files\Java\jdk1.8.0_152\jre\lib\rt.jar;D:\lkplatServer-v2\lkplatServer-v2-admin-basic.git\larkview-admin\target\classes;C:\Users\maxi9\.m2\repository\org\springframework\boot\spring-boot-devtools\2.3.11.RELEASE\spring-boot-devtools-2.3.11.RELEASE.jar;C:\Users\maxi9\.m2\repository\org\sprin
最新发布
07-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值