android开发---8.framework层的java应用接口demo

一.server层的代码
1.1 server_main.cpp
  1. #define LOG_TAG "MYSERVER"

  2. #include <fcntl.h>
  3. #include <sys/prctl.h>
  4. #include <sys/wait.h>
  5. #include <binder/IPCThreadState.h>
  6. #include <binder/ProcessState.h>
  7. #include <binder/IServiceManager.h>
  8. #include <cutils/properties.h>
  9. #include <utils/Log.h>

  10. #include "DataService.h"

  11. using namespace android;

  12. int main(int argc, char** argv)
  13. {
  14.     sp<ProcessState> proc(ProcessState::self());
  15.     sp<IServiceManager> sm = defaultServiceManager();
  16.     SLOGD("ServiceManager: %p", sm.get());
  17.     DataService::instantiate();
  18.     ProcessState::self()->startThreadPool();
  19.     IPCThreadState::self()->joinThreadPool();
  20.     return 0;
  21. }

1.2

1.2.1 
  1. cong@msi:/work/frameworks/myserver/server$ cat IDataService.
  2. #ifndef ANDROID_IMOUSE_INJECT_H_FOR_APP
  3. #define ANDROID_IMOUSE_INJECT_H_FOR_APP

  4. #include <utils/Errors.h>
  5. #include <utils/KeyedVector.h>
  6. #include <utils/RefBase.h>
  7. #include <utils/String8.h>
  8. #include <binder/IInterface.h>
  9. #include <binder/Parcel.h>

  10. namespace android {
  11. class IDataService: public IInterface
  12. {
  13. public:
  14.     enum{
  15.         SET_MOUSE_POS = IBinder::FIRST_CALL_TRANSACTION,
  16.         READ__DATA,
  17.         WRITE__DATA,
  18.         AT_CREAT_NETWORK,
  19.         AT_SEND,
  20.         AT_RECV,
  21.         ADD_LISTENER,
  22.         REMOVE_LISTENER,
  23.     };
  24.     DECLARE_META_INTERFACE(DataService);
  25. };

  26. class BnDataService: public BnInterface<IDataService>
  27. {
  28. public:
  29.     virtual status_t onTransact( uint32_t code,
  30.                                     const Parcel& data,
  31.                                     Parcel* reply,
  32.                                     uint32_t flags = 0);
  33.     virtual int32_t setSpritePosition(int x, int y) = 0;
  34.     virtual int32_t readData(char* buf)=0;
  35.     virtual int32_t writeData(char* buf, int c)=0;
  36. };

  37. };

  38. #endif

1.2.2
  1. cong@msi:/work/frameworks/myserver/server$ cat IDataService.cpp 
  2. #define LOG_TAG "MYSERVER"
  3. #include <stdint.h>
  4. #include <sys/types.h>

  5. #include <binder/Parcel.h>
  6. #include <binder/IMemory.h>

  7. #include <utils/Errors.h>
  8. #include <utils/String8.h>

  9. #include "IDataService.h"
  10. #include "DataService.h"
  11. namespace android {

  12. class BpDataService: public BpInterface<IDataService>
  13. {

  14. public:
  15.     BpDataService(const sp<IBinder>& impl)
  16.         : BpInterface<IDataService>(impl)
  17.     {}
  18.     virtual int32_t setSpritePosition(int x, int y)
  19.     {
  20.         Parcel data, reply;
  21.         SLOGD("IDataService.cpp L26: SET_MOUSE_POS");
  22.         data.writeInterfaceToken(IDataService::getInterfaceDescriptor());
  23.         status_t status = remote()->transact(SET_MOUSE_POS,data,&reply);
  24.         if(status == NO_ERROR){
  25.             return reply.readInt32();
  26.         }
  27.         return status;
  28.     }
  29.     virtual int32_t readData(char* buf)
  30.     {
  31.         Parcel data, reply;
  32.         data.writeInterfaceToken(IDataService::getInterfaceDescriptor());
  33.         status_t status = remote()->transact(READ__DATA,data,&reply);
  34.         if(status == NO_ERROR){
  35.             return reply.readInt32();
  36.         }
  37.         return status;
  38.     }
  39.     virtual int32_t writeData(char* buf, int cnt)
  40.     {
  41.         Parcel data, reply;
  42.         data.writeInterfaceToken(IDataService::getInterfaceDescriptor());
  43.         status_t status = remote()->transact(WRITE__DATA,data,&reply);
  44.         if(status == NO_ERROR){
  45.             return reply.readInt32();
  46.         }
  47.         return status;
  48.     }

  49. };

  50. IMPLEMENT_META_INTERFACE(DataService, "test.myserver.IDataService");

  51. status_t BnDataService::onTransact(
  52.     uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags)
  53. {
  54.     int32_t i;
  55.     char buf[1024];
  56.     memset(buf, 0, sizeof(buf));
  57.     switch (code) {
  58.         case SET_MOUSE_POS: { //
  59.             SLOGD("IDataService.cpp L124: SET_MOUSE_POS");
  60.             CHECK_INTERFACE(IDataService, data, reply);
  61.             int x = data.readInt32();
  62.             int y = data.readInt32();
  63.             reply->writeNoException();
  64.             reply->writeInt32(setSpritePosition(x, y));
  65.             return NO_ERROR;
  66.         } break;
  67.         case READ__DATA: { //
  68.             CHECK_INTERFACE(IDataService, data, reply);
  69.             int cnt = readData(buf);
  70. #if 0
  71.             for(int i=0; i<cnt; i++)
  72.                 SLOGD("%d=0x%x", i, buf[i]);
  73. #endif
  74.             reply->writeNoException();
  75.             //writeByteArray
  76.             reply->writeInt32(cnt);
  77.             reply->write(buf, cnt);
  78.             return NO_ERROR;
  79.         } break;
  80.         case WRITE__DATA: { //
  81.             CHECK_INTERFACE(IDataService, data, reply);
  82.             int bufferSize = data.readInt32();
  83.             if (< bufferSize) {
  84.                 data.read(buf, bufferSize);
  85.             }
  86.             reply->writeNoException();
  87.             reply->writeInt32(writeData(buf, bufferSize));
  88.             return NO_ERROR;
  89.         } break;
  90.         default:
  91.             return BBinder::onTransact(code, data, reply, flags);
  92.     }
  93. }

  94. };



1.3
1.3.1 
  1. cong@msi:/work/frameworks/myserver/server$ cat DataService.h
  2. #ifndef ANDROID_MOUSE_INJECT_SERVICE_H_FOR_APP
  3. #define ANDROID_MOUSE_INJECT_SERVICE_H_FOR_APP

  4. #include <arpa/inet.h>

  5. #include <utils/threads.h>
  6. #include <utils/List.h>
  7. #include <utils/Errors.h>
  8. #include <utils/KeyedVector.h>
  9. #include <utils/String8.h>
  10. #include <utils/Vector.h>

  11. #include <binder/Parcel.h>
  12. #include <binder/IPCThreadState.h>
  13. #include <binder/IServiceManager.h>
  14. //#include <binder/AppOpsManager.h>
  15. #include <binder/BinderService.h>
  16. //#include <binder/IAppOpsCallback.h>
  17. #include "IDataService.h"

  18. namespace android {

  19. class DataService :
  20.     public BinderService<DataService>,
  21.     public BnDataService
  22. {
  23.     friend class BinderService<DataService>;
  24. public:
  25.   DataService();
  26.   virtual ~DataService();

  27.   static void instantiate();

  28.   virtual int32_t setSpritePosition(int x, int y);
  29.   virtual int32_t readData(char* buft);
  30.   virtual int32_t writeData(char* buf, int cnt);

  31.   virtual status_t onTransact(uint32_t code,
  32.             const Parcel &data,
  33.             Parcel *reply,
  34.             uint32_t flags);
  35. };

  36. static sp<DataService> mDataService;

  37. };

  38. #endif


1.3.2 
  1. cong@msi:/work/frameworks/myserver/server$ cat DataService.cpp 
  2. #define LOG_TAG "MYSERVER"

  3. #include <stdio.h>
  4. #include <fcntl.h>
  5. #include <sys/types.h>
  6. #include <sys/stat.h>
  7. #include <sys/time.h>
  8. #include <dirent.h>
  9. #include <unistd.h>
  10. #include <string.h>
  11. #include <cutils/atomic.h>
  12. #include <cutils/properties.h>
  13. #include <utils/misc.h>
  14. #include <binder/IPCThreadState.h>
  15. #include <binder/IServiceManager.h>
  16. #include <binder/MemoryHeapBase.h>
  17. #include <binder/MemoryBase.h>
  18. #include <binder/Parcel.h>
  19. #include <utils/Errors.h>
  20. #include <utils/String8.h>
  21. #include <utils/SystemClock.h>
  22. #include <utils/Vector.h>
  23. #include <sys/ioctl.h>
  24. #include <linux/ioctl.h>
  25. #include "DataService.h"

  26. namespace android {
  27. status_t DataService::onTransact(uint32_t code,
  28.     const Parcel &data,
  29.     Parcel *reply,
  30.     uint32_t flags)
  31. {
  32.     return BnDataService::onTransact(code, data, reply, flags);
  33. }

  34. void DataService::instantiate() {
  35.     SLOGD("DataService instantiate...");
  36.     sp<DataService> iReadygokeyService = new DataService();
  37.     sp<IServiceManager> sm = defaultServiceManager();
  38.     status_t status = sm->addService(String16("iReadygo.RWService"), iReadygokeyService);
  39.     if(status != 0){
  40.        SLOGD("can't add InputMapper Service, status=%d, %s",status,strerror(errno));
  41.     }
  42.     mDataService = iReadygokeyService;
  43. }

  44. static void recv_callback(const char *s, const char *sms_pdu);

  45. DataService::DataService()
  46. {
  47.     SLOGD("DataService construct...");
  48. }

  49. DataService::~DataService()
  50. {
  51. }

  52. int DataService::setSpritePosition(int x, int y)
  53. {
  54.     SLOGD("server:DataService.cpp L111: final setSpritePosition\n");
  55.     return 0;
  56. }

  57. int DataService::readData(char* buf)
  58. {
  59.     int i;
  60.     int len = 10;
  61.     SLOGD("server: read");
  62.     for(i=0; i<10; i++)
  63.     {
  64.         buf[i] = i;
  65.     }
  66.     return len;
  67. }

  68. int DataService::writeData(char* buf, int cnt)
  69. {
  70.     int i;
  71.     SLOGD("server: write");
  72.     for(i=0; i<cnt; i++)
  73.     {
  74.         SLOGD("server: %d=0x%x ", i, buf[i]);
  75.     }
  76.     return 0;
  77. }

  78. }

1.4 Android.mk
  1. LOCAL_PATH:= $(call my-dir)

  2. include $(CLEAR_VARS)

  3. LOCAL_SRC_FILES:= \
  4.     server_main.cpp \
  5.     IDataService.cpp \
  6.     DataService.cpp

  7. LOCAL_SHARED_LIBRARIES := \
  8.     libutils \
  9.     libcutils \
  10.     liblog \
  11.     libhardware_legacy \
  12.     libbinder 

  13. LOCAL_MODULE_TAGS := optional

  14. LOCAL_MODULE:= my_server

  15. include $(BUILD_EXECUTABLE)



二. core层的代码
2.1
  1. cong@msi:/work/frameworks/myserver/core$ cat java/com/test/myserver/DataService.java 
  2. package test.myserver.dataservice;

  3. import android.content.Context;
  4. import test.myserver.IDataService;
  5. import android.os.IBinder;
  6. import android.os.Handler;
  7. import android.os.Looper;
  8. import android.os.RemoteException;
  9. import android.os.ServiceManager;
  10. import android.util.Log;

  11. public class DataService {
  12.     public static final String TAG = "MYSERVER";
  13.     //private static final String IREADYGO_KEY_SERVICE_BINDER_NAME = "iReadygo.DataService";
  14.     private static final String MYSERVICE_BINDER_NAME = "iReadygo.RWService";
  15.     private final IDataService mDataService;
  16.     private final Context mContext;

  17.     public DataService(Context context)
  18.     {
  19.         mContext = context;
  20.         IBinder DataServiceBinder = ServiceManager.getService(MYSERVICE_BINDER_NAME);
  21.         mDataService = IDataService.Stub.asInterface(DataServiceBinder);
  22.     }

  23.     public int setSpritePosition(int x, int y)
  24.     {
  25.         int ret = -1;
  26.         Log.d(TAG, "in func setSpritePosition()");
  27.         if( null ){
  28.             try{
  29.                 ret = mDataService.setSpritePosition(x, y);
  30.             } catch (RemoteException e){
  31.                 Log.e(TAG, Log.getStackTraceString(new Throwable()));
  32.             }
  33.         }
  34.         return ret;
  35.     }

  36.     public byte[] readData( )
  37.     {
  38.         byte[] buf = null;
  39.         int ret = -1;
  40.         int i=0;
  41.         Log.d(TAG, "core: in func readData()");
  42.         if( null ){
  43.             try{
  44.                 buf = mDataService.readData();
  45.                 for(i=0; i<buf.length; i++)
  46.                     Log.d(TAG, "core: readData "+i+" = "+ buf[i]);
  47.             } catch (RemoteException e){
  48.                 Log.e(TAG, Log.getStackTraceString(new Throwable()));
  49.                 return null;
  50.             }
  51.         }
  52.         return buf;
  53.     }
  54.     public int writeData(byte[] buf)
  55.     {
  56.         int ret = -1;
  57.         Log.d(TAG, "core: in func writeData()");
  58.         if( null ){
  59.             try{
  60.                 ret = mDataService.writeData(buf);
  61.             } catch (RemoteException e){
  62.                 Log.e(TAG, Log.getStackTraceString(new Throwable()));
  63.             }
  64.         }
  65.         return ret;
  66.     }


  67. }

2.2
  1. cong@msi:/work/frameworks/myserver/core$ cat java/com/test/myserver/IDataService.aidl 
  2. package test.myserver;


  3. /** @hide */
  4. interface IDataService
  5. {
  6.     int setSpritePosition(int x, int y);
  7.     byte[] readData();
  8.     int writeData(in byte[] data);
  9. }

2.3
  1. cong@msi:/work/frameworks/myserver/core$ cat com.test.myserver.xml 
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <permissions>
  4.     <library name="com.test.myserver.xml"
  5.             file="/system/framework/com.test.myserver.jar"/>
  6. </permissions>

2.4
  1. cong@msi:/work/frameworks/myserver/core$ cat Android.mk 
  2. LOCAL_PATH := $(call my-dir)

  3. include $(CLEAR_VARS)
  4.     
  5. LOCAL_SRC_FILES := \
  6.     $(call all-subdir-java-files) \
  7.     java/com/test/myserver/IDataService.aidl 

  8. LOCAL_AIDL_INCLUDES += frameworks/myserver/core/java/com

  9. LOCAL_MODULE_TAGS := optional

  10. # This is the target being built.
  11. LOCAL_MODULE:= com.test.myserver

  12. include $(BUILD_JAVA_LIBRARY)

  13. include $(CLEAR_VARS)
  14. LOCAL_MODULE := com.test.myserver.xml

  15. LOCAL_MODULE_TAGS := optional

  16. LOCAL_MODULE_CLASS := ETC 

  17. LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/permissions

  18. LOCAL_SRC_FILES := $(LOCAL_MODULE)

  19. include $(BUILD_PREBUILT)




三.apk层的代码
3.1 TestData.java
  1. package com.test;
  2. import com.test.testData.R;
  3. import android.app.Activity;
  4. import android.content.Context;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.util.Log;
  9. import android.widget.Button;

  10. import test.myserver.dataservice.DataService;

  11. public class TestData extends Activity {
  12.     public static final String TAG = "MYSERVER";

  13.     class DataServiceWrapper extends DataService {
  14.         public DataServiceWrapper(Context context) {
  15.             super(context);
  16.         }

  17.     }

  18.     @Override
  19.     protected void onCreate(Bundle savedInstanceState) {
  20.         super.onCreate(savedInstanceState);
  21.         setContentView(R.layout.activity_main);
  22.         final DataService im = new DataService(this);
  23.         Button btnTest= (Button) findViewById(R.id.btn_test); 

  24.         btnTest.setOnClickListener(new OnClickListener() { 
  25.             @Override
  26.             public void onClick(View v) {
  27.                 byte [] buf = new byte[16];
  28.                 int i;

  29.                 //Log.d(TAG, "next setSpritePosition()"); 
  30.                 //im.setSpritePosition(5, 6);
  31.                 //Log.d(TAG, "next im.readData()"); 
  32.                 
  33.                 Log.d(TAG, "apk: next readData"); 
  34.                 buf = im.readData();
  35.                 Log.d(TAG, "apk: next readData over"); 
  36.                 for(i=0; i<buf.length; i++)
  37.                 {
  38.                     Log.d(TAG, "apk: readData " + i + "= " + buf[i]); 
  39.                 }

  40.                 Log.d(TAG, "apk: next writeData"); 
  41.                 im.writeData(buf);
  42.                 Log.d(TAG, "apk: next writeData over"); 
  43.                 try{
  44.                 }catch(Exception e){
  45.                     Log.d(TAG, "cong: error"); 
  46.                 }
  47.             }
  48.         });
  49.     }
  50. }


四.编译脚本
4.1 myserver.sh
  1. cong@msi:/work/$ cat myserver.sh 
  2. #!/bin/sh
  3. make_server()
  4. {
  5.     adb remount
  6.     mmm ./frameworks/myserver/server
  7.     adb push out/debug/target/product/ardbeg/system/bin/my_server /system/bin/
  8.     adb shell sync
  9. }

  10. make_core()
  11. {
  12.     adb remount
  13.     mmm ./frameworks/myserver/core
  14.     adb push out/debug/target/product/ardbeg/system/framework/com.test.myserver.jar /system/framework/com.test.myserver.jar
  15.     adb push out/debug/target/product/ardbeg/system/etc/permissions/com.test.myserver.xml /system/etc/permissions/com.test.myserver.xml
  16.     adb shell sync
  17.     #cp out/target/common/obj/JAVA_LIBRARIES/com.ireadygo.cloudsim_intermediates/classes-full-debug.jar /tmp/
  18. }


  19. make_apk()
  20. {
  21.     rm -rf ./frameworks/myserver/testapk/gen/
  22.     rm -rf ./frameworks/myserver/testakp/bin/
  23.     rm -rf ./frameworks/myserver/testapk/assets/
  24.     adb remount
  25.     mmm ./frameworks/myserver/testapk/
  26.     adb push out/debug/target/product/ardbeg/system/app/myserv_app.apk /system/app/
  27.     adb shell sync
  28. }

  29. case "$1" in
  30.     serv)
  31.         make_server
  32.         ;;
  33.     core)
  34.         make_core
  35.         ;;
  36.     apk)
  37.         make_apk
  38.         ;;
  39.     *)
  40.         make_server
  41.         make_core
  42.         make_apk
  43.         ;;
  44. esac


五.执执结果
5.1
  1. D/MYSERVER( 1502): apk: next readData            --> 1. apk层调用read
  2. D/MYSERVER( 1502): core: in func readData()      --> 1. core层调用read
  3. D/MYSERVER( 1459): server: read                  --> 1. server层调用read 
  4. D/MYSERVER( 1502): core: readData 0 = 0          --> 1. core层调用read返回并打印结果
  5. D/MYSERVER( 1502): core: readData 1 = 1
  6. D/MYSERVER( 1502): core: readData 2 = 2
  7. D/MYSERVER( 1502): core: readData 3 = 3
  8. D/MYSERVER( 1502): core: readData 4 = 4
  9. D/MYSERVER( 1502): core: readData 5 = 5
  10. D/MYSERVER( 1502): core: readData 6 = 6
  11. D/MYSERVER( 1502): core: readData 7 = 7
  12. D/MYSERVER( 1502): core: readData 8 = 8
  13. D/MYSERVER( 1502): core: readData 9 = 9
  14. D/MYSERVER( 1502): apk: next readData over      --> 1. apk层调用read结束
  15. D/MYSERVER( 1502): apk: readData 0= 0           --> 1. apk层调用read返回并打印结果 
  16. D/MYSERVER( 1502): apk: readData 1= 1
  17. D/MYSERVER( 1502): apk: readData 2= 2
  18. D/MYSERVER( 1502): apk: readData 3= 3
  19. D/MYSERVER( 1502): apk: readData 4= 4
  20. D/MYSERVER( 1502): apk: readData 5= 5
  21. D/MYSERVER( 1502): apk: readData 6= 6
  22. D/MYSERVER( 1502): apk: readData 7= 7
  23. D/MYSERVER( 1502): apk: readData 8= 8
  24. D/MYSERVER( 1502): apk: readData 9= 9
  25. D/MYSERVER( 1502): apk: next writeData           --> 2. apk层调用write
  26. D/MYSERVER( 1502): core: in func writeData()     --> 2. core层调用write
  27. D/MYSERVER( 1459): server: write                 --> 2. server层调用write
  28. D/MYSERVER( 1459): server: 0=0x0                 --> 2. server层打印write的buf
  29. D/MYSERVER( 1459): server: 1=0x1 
  30. D/MYSERVER( 1459): server: 2=0x2 
  31. D/MYSERVER( 1459): server: 3=0x3 
  32. D/MYSERVER( 1459): server: 4=0x4 
  33. D/MYSERVER( 1459): server: 5=0x5 
  34. D/MYSERVER( 1459): server: 6=0x6 
  35. D/MYSERVER( 1459): server: 7=0x7 
  36. D/MYSERVER( 1459): server: 8=0x8 
  37. D/MYSERVER( 1459): server: 9=0x9 
  38. D/MYSERVER( 1502): apk: next writeData over     --> 2. apk层调用write返回


六.代码打包
6.1
server.rar (下载后改名为server.tar.gz)
6.2
core.rar (下载后改名为core.tar.gz)
6.3
testapk.rar (下载后改名为testapk.tar.gz)

七.注意
7.1 不在源码下编译apk
需要把在源码下编译出来的jar包发给apk的开发人员,路径是:
out/debug/target/common/obj/JAVA_LIBRARIES/com.test.myserver_intermediates/classes-full-debug.jar
一定是这个classes-full-debug.jar而不是
install out/debug/target/product/ardbeg/system/framework/com.test.myserver.jar
C:\Users\13085\.jdks\ms-17.0.15\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:D:\JAVA\IntelliJ IDEA 2024.3.5\lib\idea_rt.jar=56973" -Dfile.encoding=UTF-8 -classpath D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-admin\target\classes;D:\JAVA\maven\com\mysql\mysql-connector-j\9.1.0\mysql-connector-j-9.1.0.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-doc\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-core\target\classes;D:\JAVA\maven\org\springframework\spring-context-support\6.2.8\spring-context-support-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-beans\6.2.8\spring-beans-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-context\6.2.8\spring-context-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-web\6.2.8\spring-web-6.2.8.jar;D:\JAVA\maven\io\micrometer\micrometer-observation\1.14.8\micrometer-observation-1.14.8.jar;D:\JAVA\maven\io\micrometer\micrometer-commons\1.14.8\micrometer-commons-1.14.8.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-validation\3.4.7\spring-boot-starter-validation-3.4.7.jar;D:\JAVA\maven\org\apache\tomcat\embed\tomcat-embed-el\10.1.42\tomcat-embed-el-10.1.42.jar;D:\JAVA\maven\org\hibernate\validator\hibernate-validator\8.0.2.Final\hibernate-validator-8.0.2.Final.jar;D:\JAVA\maven\org\jboss\logging\jboss-logging\3.6.1.Final\jboss-logging-3.6.1.Final.jar;D:\JAVA\maven\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-aop\3.4.7\spring-boot-starter-aop-3.4.7.jar;D:\JAVA\maven\org\springframework\spring-aop\6.2.8\spring-aop-6.2.8.jar;D:\JAVA\maven\org\aspectj\aspectjweaver\1.9.24\aspectjweaver-1.9.24.jar;D:\JAVA\maven\org\apache\commons\commons-lang3\3.17.0\commons-lang3-3.17.0.jar;D:\JAVA\maven\jakarta\servlet\jakarta.servlet-api\6.0.0\jakarta.servlet-api-6.0.0.jar;D:\JAVA\maven\cn\hutool\hutool-core\5.8.38\hutool-core-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-http\5.8.38\hutool-http-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-extra\5.8.38\hutool-extra-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-setting\5.8.38\hutool-setting-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-log\5.8.38\hutool-log-5.8.38.jar;D:\JAVA\maven\org\projectlombok\lombok\1.18.36\lombok-1.18.36.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-configuration-processor\3.4.7\spring-boot-configuration-processor-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-properties-migrator\3.4.7\spring-boot-properties-migrator-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-configuration-metadata\3.4.7\spring-boot-configuration-metadata-3.4.7.jar;D:\JAVA\maven\io\github\linpeilie\mapstruct-plus-spring-boot-starter\1.4.8\mapstruct-plus-spring-boot-starter-1.4.8.jar;D:\JAVA\maven\io\github\linpeilie\mapstruct-plus\1.4.8\mapstruct-plus-1.4.8.jar;D:\JAVA\maven\org\mapstruct\mapstruct\1.5.5.Final\mapstruct-1.5.5.Final.jar;D:\JAVA\maven\io\github\linpeilie\mapstruct-plus-object-convert\1.4.8\mapstruct-plus-object-convert-1.4.8.jar;D:\JAVA\maven\org\lionsoul\ip2region\2.7.0\ip2region-2.7.0.jar;D:\JAVA\maven\org\springdoc\springdoc-openapi-starter-webmvc-api\2.8.8\springdoc-openapi-starter-webmvc-api-2.8.8.jar;D:\JAVA\maven\org\springdoc\springdoc-openapi-starter-common\2.8.8\springdoc-openapi-starter-common-2.8.8.jar;D:\JAVA\maven\io\swagger\core\v3\swagger-core-jakarta\2.2.30\swagger-core-jakarta-2.2.30.jar;D:\JAVA\maven\io\swagger\core\v3\swagger-annotations-jakarta\2.2.30\swagger-annotations-jakarta-2.2.30.jar;D:\JAVA\maven\io\swagger\core\v3\swagger-models-jakarta\2.2.30\swagger-models-jakarta-2.2.30.jar;D:\JAVA\maven\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.18.4\jackson-dataformat-yaml-2.18.4.jar;D:\JAVA\maven\org\springframework\spring-webmvc\6.2.8\spring-webmvc-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-expression\6.2.8\spring-expression-6.2.8.jar;D:\JAVA\maven\com\github\therapi\therapi-runtime-javadoc\0.15.0\therapi-runtime-javadoc-0.15.0.jar;D:\JAVA\maven\com\fasterxml\jackson\module\jackson-module-kotlin\2.18.4\jackson-module-kotlin-2.18.4.jar;D:\JAVA\maven\com\fasterxml\jackson\core\jackson-databind\2.18.4\jackson-databind-2.18.4.jar;D:\JAVA\maven\com\fasterxml\jackson\core\jackson-core\2.18.4.1\jackson-core-2.18.4.1.jar;D:\JAVA\maven\com\fasterxml\jackson\core\jackson-annotations\2.18.4\jackson-annotations-2.18.4.jar;D:\JAVA\maven\org\jetbrains\kotlin\kotlin-reflect\1.9.25\kotlin-reflect-1.9.25.jar;D:\JAVA\maven\org\jetbrains\kotlin\kotlin-stdlib\1.9.25\kotlin-stdlib-1.9.25.jar;D:\JAVA\maven\org\jetbrains\annotations\13.0\annotations-13.0.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-social\target\classes;D:\JAVA\maven\me\zhyd\oauth\JustAuth\1.16.7\JustAuth-1.16.7.jar;D:\JAVA\maven\com\xkcoding\http\simple-http\1.0.5\simple-http-1.0.5.jar;D:\JAVA\maven\com\alibaba\fastjson\1.2.83\fastjson-1.2.83.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-json\target\classes;D:\JAVA\maven\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.18.4\jackson-datatype-jsr310-2.18.4.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-redis\target\classes;D:\JAVA\maven\org\redisson\redisson-spring-boot-starter\3.50.0\redisson-spring-boot-starter-3.50.0.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-data-redis\3.4.7\spring-boot-starter-data-redis-3.4.7.jar;D:\JAVA\maven\org\springframework\data\spring-data-redis\3.4.7\spring-data-redis-3.4.7.jar;D:\JAVA\maven\org\springframework\data\spring-data-keyvalue\3.4.7\spring-data-keyvalue-3.4.7.jar;D:\JAVA\maven\org\springframework\data\spring-data-commons\3.4.7\spring-data-commons-3.4.7.jar;D:\JAVA\maven\org\springframework\spring-oxm\6.2.8\spring-oxm-6.2.8.jar;D:\JAVA\maven\org\redisson\redisson\3.50.0\redisson-3.50.0.jar;D:\JAVA\maven\io\netty\netty-resolver-dns\4.1.122.Final\netty-resolver-dns-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-dns\4.1.122.Final\netty-codec-dns-4.1.122.Final.jar;D:\JAVA\maven\javax\cache\cache-api\1.1.1\cache-api-1.1.1.jar;D:\JAVA\maven\io\projectreactor\reactor-core\3.7.7\reactor-core-3.7.7.jar;D:\JAVA\maven\io\reactivex\rxjava3\rxjava\3.1.10\rxjava-3.1.10.jar;D:\JAVA\maven\com\esotericsoftware\kryo\5.6.2\kryo-5.6.2.jar;D:\JAVA\maven\com\esotericsoftware\reflectasm\1.11.9\reflectasm-1.11.9.jar;D:\JAVA\maven\com\esotericsoftware\minlog\1.3.1\minlog-1.3.1.jar;D:\JAVA\maven\org\jodd\jodd-util\6.3.0\jodd-util-6.3.0.jar;D:\JAVA\maven\org\redisson\redisson-spring-data-35\3.50.0\redisson-spring-data-35-3.50.0.jar;D:\JAVA\maven\com\baomidou\lock4j-redisson-spring-boot-starter\2.2.7\lock4j-redisson-spring-boot-starter-2.2.7.jar;D:\JAVA\maven\com\baomidou\lock4j-core\2.2.7\lock4j-core-2.2.7.jar;D:\JAVA\maven\com\github\ben-manes\caffeine\caffeine\3.1.8\caffeine-3.1.8.jar;D:\JAVA\maven\org\checkerframework\checker-qual\3.37.0\checker-qual-3.37.0.jar;D:\JAVA\maven\com\google\errorprone\error_prone_annotations\2.21.1\error_prone_annotations-2.21.1.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-ratelimiter\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-mail\target\classes;D:\JAVA\maven\jakarta\mail\jakarta.mail-api\2.1.3\jakarta.mail-api-2.1.3.jar;D:\JAVA\maven\jakarta\activation\jakarta.activation-api\2.1.3\jakarta.activation-api-2.1.3.jar;D:\JAVA\maven\org\eclipse\angus\jakarta.mail\2.0.3\jakarta.mail-2.0.3.jar;D:\JAVA\maven\org\eclipse\angus\angus-activation\2.0.2\angus-activation-2.0.2.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-modules\ruoyi-system\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-mybatis\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-satoken\target\classes;D:\JAVA\maven\cn\dev33\sa-token-spring-boot3-starter\1.44.0\sa-token-spring-boot3-starter-1.44.0.jar;D:\JAVA\maven\cn\dev33\sa-token-jakarta-servlet\1.44.0\sa-token-jakarta-servlet-1.44.0.jar;D:\JAVA\maven\cn\dev33\sa-token-spring-boot-autoconfig\1.44.0\sa-token-spring-boot-autoconfig-1.44.0.jar;D:\JAVA\maven\cn\dev33\sa-token-jackson\1.44.0\sa-token-jackson-1.44.0.jar;D:\JAVA\maven\cn\dev33\sa-token-jwt\1.44.0\sa-token-jwt-1.44.0.jar;D:\JAVA\maven\cn\hutool\hutool-jwt\5.8.38\hutool-jwt-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-json\5.8.38\hutool-json-5.8.38.jar;D:\JAVA\maven\com\baomidou\dynamic-datasource-spring-boot3-starter\4.3.1\dynamic-datasource-spring-boot3-starter-4.3.1.jar;D:\JAVA\maven\com\baomidou\dynamic-datasource-spring-boot-common\4.3.1\dynamic-datasource-spring-boot-common-4.3.1.jar;D:\JAVA\maven\com\baomidou\dynamic-datasource-spring\4.3.1\dynamic-datasource-spring-4.3.1.jar;D:\JAVA\maven\com\baomidou\dynamic-datasource-creator\4.3.1\dynamic-datasource-creator-4.3.1.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-spring-boot3-starter\3.5.12\mybatis-plus-spring-boot3-starter-3.5.12.jar;D:\JAVA\maven\com\baomidou\mybatis-plus\3.5.12\mybatis-plus-3.5.12.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-core\3.5.12\mybatis-plus-core-3.5.12.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-annotation\3.5.12\mybatis-plus-annotation-3.5.12.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-spring\3.5.12\mybatis-plus-spring-3.5.12.jar;D:\JAVA\maven\org\mybatis\mybatis\3.5.16\mybatis-3.5.16.jar;D:\JAVA\maven\org\mybatis\mybatis-spring\3.0.4\mybatis-spring-3.0.4.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-spring-boot-autoconfigure\3.5.12\mybatis-plus-spring-boot-autoconfigure-3.5.12.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-jdbc\3.4.7\spring-boot-starter-jdbc-3.4.7.jar;D:\JAVA\maven\com\zaxxer\HikariCP\5.1.0\HikariCP-5.1.0.jar;D:\JAVA\maven\org\springframework\spring-jdbc\6.2.8\spring-jdbc-6.2.8.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-jsqlparser\3.5.12\mybatis-plus-jsqlparser-3.5.12.jar;D:\JAVA\maven\com\github\jsqlparser\jsqlparser\5.1\jsqlparser-5.1.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-jsqlparser-common\3.5.12\mybatis-plus-jsqlparser-common-3.5.12.jar;D:\JAVA\maven\com\baomidou\mybatis-plus-extension\3.5.12\mybatis-plus-extension-3.5.12.jar;D:\JAVA\maven\p6spy\p6spy\3.9.1\p6spy-3.9.1.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-translation\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-oss\target\classes;D:\JAVA\maven\software\amazon\awssdk\s3\2.28.22\s3-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\aws-xml-protocol\2.28.22\aws-xml-protocol-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\aws-query-protocol\2.28.22\aws-query-protocol-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\protocol-core\2.28.22\protocol-core-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\arns\2.28.22\arns-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\profiles\2.28.22\profiles-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\crt-core\2.28.22\crt-core-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\http-auth\2.28.22\http-auth-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\identity-spi\2.28.22\identity-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\http-auth-spi\2.28.22\http-auth-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\http-auth-aws\2.28.22\http-auth-aws-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\checksums\2.28.22\checksums-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\checksums-spi\2.28.22\checksums-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\retries-spi\2.28.22\retries-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\sdk-core\2.28.22\sdk-core-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\retries\2.28.22\retries-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\auth\2.28.22\auth-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\http-auth-aws-eventstream\2.28.22\http-auth-aws-eventstream-2.28.22.jar;D:\JAVA\maven\software\amazon\eventstream\eventstream\1.0.1\eventstream-1.0.1.jar;D:\JAVA\maven\software\amazon\awssdk\http-client-spi\2.28.22\http-client-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\regions\2.28.22\regions-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\annotations\2.28.22\annotations-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\utils\2.28.22\utils-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\aws-core\2.28.22\aws-core-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\metrics-spi\2.28.22\metrics-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\json-utils\2.28.22\json-utils-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\third-party-jackson-core\2.28.22\third-party-jackson-core-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\endpoints-spi\2.28.22\endpoints-spi-2.28.22.jar;D:\JAVA\maven\software\amazon\awssdk\netty-nio-client\2.28.22\netty-nio-client-2.28.22.jar;D:\JAVA\maven\io\netty\netty-codec-http\4.1.122.Final\netty-codec-http-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-http2\4.1.122.Final\netty-codec-http2-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec\4.1.122.Final\netty-codec-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport\4.1.122.Final\netty-transport-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-common\4.1.122.Final\netty-common-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-buffer\4.1.122.Final\netty-buffer-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-handler\4.1.122.Final\netty-handler-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-native-unix-common\4.1.122.Final\netty-transport-native-unix-common-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-classes-epoll\4.1.122.Final\netty-transport-classes-epoll-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-resolver\4.1.122.Final\netty-resolver-4.1.122.Final.jar;D:\JAVA\maven\org\reactivestreams\reactive-streams\1.0.4\reactive-streams-1.0.4.jar;D:\JAVA\maven\software\amazon\awssdk\s3-transfer-manager\2.28.22\s3-transfer-manager-2.28.22.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-log\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-excel\target\classes;D:\JAVA\maven\cn\idev\excel\fastexcel\1.2.0\fastexcel-1.2.0.jar;D:\JAVA\maven\cn\idev\excel\fastexcel-core\1.2.0\fastexcel-core-1.2.0.jar;D:\JAVA\maven\org\apache\commons\commons-csv\1.11.0\commons-csv-1.11.0.jar;D:\JAVA\maven\commons-codec\commons-codec\1.17.2\commons-codec-1.17.2.jar;D:\JAVA\maven\org\apache\poi\poi\5.3.0\poi-5.3.0.jar;D:\JAVA\maven\org\apache\commons\commons-collections4\4.4\commons-collections4-4.4.jar;D:\JAVA\maven\org\apache\commons\commons-math3\3.6.1\commons-math3-3.6.1.jar;D:\JAVA\maven\com\zaxxer\SparseBitSet\1.3\SparseBitSet-1.3.jar;D:\JAVA\maven\org\apache\poi\poi-ooxml\5.3.0\poi-ooxml-5.3.0.jar;D:\JAVA\maven\org\apache\poi\poi-ooxml-lite\5.3.0\poi-ooxml-lite-5.3.0.jar;D:\JAVA\maven\org\apache\xmlbeans\xmlbeans\5.2.1\xmlbeans-5.2.1.jar;D:\JAVA\maven\org\apache\commons\commons-compress\1.26.2\commons-compress-1.26.2.jar;D:\JAVA\maven\com\github\virtuald\curvesapi\1.08\curvesapi-1.08.jar;D:\JAVA\maven\org\ehcache\ehcache\3.10.8\ehcache-3.10.8.jar;D:\JAVA\maven\org\glassfish\jaxb\jaxb-runtime\4.0.5\jaxb-runtime-4.0.5.jar;D:\JAVA\maven\org\glassfish\jaxb\jaxb-core\4.0.5\jaxb-core-4.0.5.jar;D:\JAVA\maven\org\glassfish\jaxb\txw2\4.0.5\txw2-4.0.5.jar;D:\JAVA\maven\com\sun\istack\istack-commons-runtime\4.1.2\istack-commons-runtime-4.1.2.jar;D:\JAVA\maven\commons-io\commons-io\2.16.1\commons-io-2.16.1.jar;D:\JAVA\maven\cn\idev\excel\fastexcel-support\0.0.1\fastexcel-support-0.0.1.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-sms\target\classes;D:\JAVA\maven\org\dromara\sms4j\sms4j-spring-boot-starter\3.3.4\sms4j-spring-boot-starter-3.3.4.jar;D:\JAVA\maven\org\dromara\sms4j\sms4j-core\3.3.4\sms4j-core-3.3.4.jar;D:\JAVA\maven\org\dromara\sms4j\sms4j-provider\3.3.4\sms4j-provider-3.3.4.jar;D:\JAVA\maven\org\dromara\sms4j\sms4j-api\3.3.4\sms4j-api-3.3.4.jar;D:\JAVA\maven\org\dromara\sms4j\sms4j-comm\3.3.4\sms4j-comm-3.3.4.jar;D:\JAVA\maven\javax\xml\bind\jaxb-api\2.3.0\jaxb-api-2.3.0.jar;D:\JAVA\maven\com\sun\xml\bind\jaxb-impl\4.0.5\jaxb-impl-4.0.5.jar;D:\JAVA\maven\com\sun\xml\bind\jaxb-core\4.0.5\jaxb-core-4.0.5.jar;D:\JAVA\maven\javax\activation\activation\1.1.1\activation-1.1.1.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-tenant\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-security\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-web\target\classes;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-web\3.4.7\spring-boot-starter-web-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-json\3.4.7\spring-boot-starter-json-3.4.7.jar;D:\JAVA\maven\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.18.4\jackson-datatype-jdk8-2.18.4.jar;D:\JAVA\maven\com\fasterxml\jackson\module\jackson-module-parameter-names\2.18.4\jackson-module-parameter-names-2.18.4.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-undertow\3.4.7\spring-boot-starter-undertow-3.4.7.jar;D:\JAVA\maven\io\undertow\undertow-core\2.3.18.Final\undertow-core-2.3.18.Final.jar;D:\JAVA\maven\org\jboss\xnio\xnio-api\3.8.16.Final\xnio-api-3.8.16.Final.jar;D:\JAVA\maven\org\wildfly\common\wildfly-common\1.5.4.Final\wildfly-common-1.5.4.Final.jar;D:\JAVA\maven\org\wildfly\client\wildfly-client-config\1.0.1.Final\wildfly-client-config-1.0.1.Final.jar;D:\JAVA\maven\org\jboss\xnio\xnio-nio\3.8.16.Final\xnio-nio-3.8.16.Final.jar;D:\JAVA\maven\org\jboss\threads\jboss-threads\3.5.0.Final\jboss-threads-3.5.0.Final.jar;D:\JAVA\maven\io\undertow\undertow-servlet\2.3.18.Final\undertow-servlet-2.3.18.Final.jar;D:\JAVA\maven\io\undertow\undertow-websockets-jsr\2.3.18.Final\undertow-websockets-jsr-2.3.18.Final.jar;D:\JAVA\maven\jakarta\websocket\jakarta.websocket-api\2.1.1\jakarta.websocket-api-2.1.1.jar;D:\JAVA\maven\jakarta\websocket\jakarta.websocket-client-api\2.1.1\jakarta.websocket-client-api-2.1.1.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-actuator\3.4.7\spring-boot-starter-actuator-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-actuator-autoconfigure\3.4.7\spring-boot-actuator-autoconfigure-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-actuator\3.4.7\spring-boot-actuator-3.4.7.jar;D:\JAVA\maven\io\micrometer\micrometer-jakarta9\1.14.8\micrometer-jakarta9-1.14.8.jar;D:\JAVA\maven\io\micrometer\micrometer-core\1.14.8\micrometer-core-1.14.8.jar;D:\JAVA\maven\org\hdrhistogram\HdrHistogram\2.2.2\HdrHistogram-2.2.2.jar;D:\JAVA\maven\org\latencyutils\LatencyUtils\2.0.3\LatencyUtils-2.0.3.jar;D:\JAVA\maven\cn\hutool\hutool-captcha\5.8.38\hutool-captcha-5.8.38.jar;D:\JAVA\maven\cn\hutool\hutool-crypto\5.8.38\hutool-crypto-5.8.38.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-idempotent\target\classes;D:\JAVA\maven\cn\dev33\sa-token-core\1.44.0\sa-token-core-1.44.0.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-sensitive\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-encrypt\target\classes;D:\JAVA\maven\org\bouncycastle\bcprov-jdk15to18\1.80\bcprov-jdk15to18-1.80.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-websocket\target\classes;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-websocket\3.4.7\spring-boot-starter-websocket-3.4.7.jar;D:\JAVA\maven\org\springframework\spring-messaging\6.2.8\spring-messaging-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-websocket\6.2.8\spring-websocket-6.2.8.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-sse\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-modules\ruoyi-job\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-common\ruoyi-common-job\target\classes;D:\JAVA\maven\org\springframework\boot\spring-boot-autoconfigure\3.4.7\spring-boot-autoconfigure-3.4.7.jar;D:\JAVA\maven\com\aizuda\snail-job-client-starter\1.5.0\snail-job-client-starter-1.5.0.jar;D:\JAVA\maven\com\aizuda\snail-job-client-job-core\1.5.0\snail-job-client-job-core-1.5.0.jar;D:\JAVA\maven\com\google\guava\guava\33.3.0-jre\guava-33.3.0-jre.jar;D:\JAVA\maven\com\google\guava\failureaccess\1.0.2\failureaccess-1.0.2.jar;D:\JAVA\maven\com\google\guava\listenablefuture\9999.0-empty-to-avoid-conflict-with-guava\listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar;D:\JAVA\maven\com\google\code\findbugs\jsr305\3.0.2\jsr305-3.0.2.jar;D:\JAVA\maven\com\google\j2objc\j2objc-annotations\3.0.0\j2objc-annotations-3.0.0.jar;D:\JAVA\maven\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar;D:\JAVA\maven\com\aizuda\snail-job-common-server-api\1.5.0\snail-job-common-server-api-1.5.0.jar;D:\JAVA\maven\com\aizuda\snail-job-common-core\1.5.0\snail-job-common-core-1.5.0.jar;D:\JAVA\maven\com\google\protobuf\protobuf-java\3.25.6\protobuf-java-3.25.6.jar;D:\JAVA\maven\com\google\api\grpc\proto-google-common-protos\2.54.1\proto-google-common-protos-2.54.1.jar;D:\JAVA\maven\com\aizuda\snail-job-common-client-api\1.5.0\snail-job-common-client-api-1.5.0.jar;D:\JAVA\maven\com\aizuda\snail-job-client-common\1.5.0\snail-job-client-common-1.5.0.jar;D:\JAVA\maven\io\netty\netty-all\4.1.122.Final\netty-all-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-haproxy\4.1.122.Final\netty-codec-haproxy-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-memcache\4.1.122.Final\netty-codec-memcache-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-mqtt\4.1.122.Final\netty-codec-mqtt-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-redis\4.1.122.Final\netty-codec-redis-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-smtp\4.1.122.Final\netty-codec-smtp-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-socks\4.1.122.Final\netty-codec-socks-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-stomp\4.1.122.Final\netty-codec-stomp-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-codec-xml\4.1.122.Final\netty-codec-xml-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-handler-proxy\4.1.122.Final\netty-handler-proxy-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-handler-ssl-ocsp\4.1.122.Final\netty-handler-ssl-ocsp-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-rxtx\4.1.122.Final\netty-transport-rxtx-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-sctp\4.1.122.Final\netty-transport-sctp-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-udt\4.1.122.Final\netty-transport-udt-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-classes-kqueue\4.1.122.Final\netty-transport-classes-kqueue-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-resolver-dns-classes-macos\4.1.122.Final\netty-resolver-dns-classes-macos-4.1.122.Final.jar;D:\JAVA\maven\io\netty\netty-transport-native-epoll\4.1.122.Final\netty-transport-native-epoll-4.1.122.Final-linux-x86_64.jar;D:\JAVA\maven\io\netty\netty-transport-native-epoll\4.1.122.Final\netty-transport-native-epoll-4.1.122.Final-linux-aarch_64.jar;D:\JAVA\maven\io\netty\netty-transport-native-epoll\4.1.122.Final\netty-transport-native-epoll-4.1.122.Final-linux-riscv64.jar;D:\JAVA\maven\io\netty\netty-transport-native-kqueue\4.1.122.Final\netty-transport-native-kqueue-4.1.122.Final-osx-x86_64.jar;D:\JAVA\maven\io\netty\netty-transport-native-kqueue\4.1.122.Final\netty-transport-native-kqueue-4.1.122.Final-osx-aarch_64.jar;D:\JAVA\maven\io\netty\netty-resolver-dns-native-macos\4.1.122.Final\netty-resolver-dns-native-macos-4.1.122.Final-osx-x86_64.jar;D:\JAVA\maven\io\netty\netty-resolver-dns-native-macos\4.1.122.Final\netty-resolver-dns-native-macos-4.1.122.Final-osx-aarch_64.jar;D:\JAVA\maven\com\github\rholder\guava-retrying\2.0.0\guava-retrying-2.0.0.jar;D:\JAVA\maven\io\grpc\grpc-netty-shaded\1.71.0\grpc-netty-shaded-1.71.0.jar;D:\JAVA\maven\io\grpc\grpc-core\1.71.0\grpc-core-1.71.0.jar;D:\JAVA\maven\com\google\code\gson\gson\2.11.0\gson-2.11.0.jar;D:\JAVA\maven\com\google\android\annotations\4.1.1.4\annotations-4.1.1.4.jar;D:\JAVA\maven\io\grpc\grpc-context\1.71.0\grpc-context-1.71.0.jar;D:\JAVA\maven\io\perfmark\perfmark-api\0.27.0\perfmark-api-0.27.0.jar;D:\JAVA\maven\org\codehaus\mojo\animal-sniffer-annotations\1.24\animal-sniffer-annotations-1.24.jar;D:\JAVA\maven\io\grpc\grpc-protobuf\1.71.0\grpc-protobuf-1.71.0.jar;D:\JAVA\maven\io\grpc\grpc-protobuf-lite\1.71.0\grpc-protobuf-lite-1.71.0.jar;D:\JAVA\maven\io\grpc\grpc-stub\1.71.0\grpc-stub-1.71.0.jar;D:\JAVA\maven\io\grpc\grpc-api\1.71.0\grpc-api-1.71.0.jar;D:\JAVA\maven\io\grpc\grpc-util\1.71.0\grpc-util-1.71.0.jar;D:\JAVA\maven\com\aizuda\snail-job-common-log\1.5.0\snail-job-common-log-1.5.0.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-modules\ruoyi-generator\target\classes;D:\JAVA\maven\org\apache\velocity\velocity-engine-core\2.3\velocity-engine-core-2.3.jar;D:\JAVA\maven\org\slf4j\slf4j-api\2.0.17\slf4j-api-2.0.17.jar;D:\JAVA\maven\org\anyline\anyline-environment-spring-data-jdbc\8.7.2-20250603\anyline-environment-spring-data-jdbc-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-data-jdbc\8.7.2-20250603\anyline-data-jdbc-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-data\8.7.2-20250603\anyline-data-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-core\8.7.2-20250603\anyline-core-8.7.2-20250603.jar;D:\JAVA\maven\org\dom4j\dom4j\2.1.4\dom4j-2.1.4.jar;D:\JAVA\maven\org\anyline\anyline-oro\8.7.2-20250603\anyline-oro-8.7.2-20250603.jar;D:\JAVA\maven\ognl\ognl\3.2.10\ognl-3.2.10.jar;D:\JAVA\maven\org\javassist\javassist\3.24.1-GA\javassist-3.24.1-GA.jar;D:\JAVA\maven\org\anyline\anyline-log\8.7.2-20250603\anyline-log-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-environment-spring-data\8.7.2-20250603\anyline-environment-spring-data-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-environment-spring\8.7.2-20250603\anyline-environment-spring-8.7.2-20250603.jar;D:\JAVA\maven\org\anyline\anyline-data-jdbc-mysql\8.7.2-20250603\anyline-data-jdbc-mysql-8.7.2-20250603.jar;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-modules\ruoyi-demo\target\classes;D:\JAVA\java_project\RuoYi-Vue-Plus-5.X\RuoYi-Vue-Plus-5.X\ruoyi-modules\ruoyi-workflow\target\classes;D:\JAVA\maven\org\dromara\warm\warm-flow-mybatis-plus-sb3-starter\1.7.4\warm-flow-mybatis-plus-sb3-starter-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-mybatis-plus-sb-starter\1.7.4\warm-flow-mybatis-plus-sb-starter-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-mybatis-plus-core\1.7.4\warm-flow-mybatis-plus-core-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-plugin-ui-sb-web\1.7.4\warm-flow-plugin-ui-sb-web-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-plugin-modes-sb\1.7.4\warm-flow-plugin-modes-sb-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-core\1.7.4\warm-flow-core-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-plugin-json\1.7.4\warm-flow-plugin-json-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-plugin-ui-core\1.7.4\warm-flow-plugin-ui-core-1.7.4.jar;D:\JAVA\maven\org\dromara\warm\warm-flow-plugin-vue3-ui\1.7.4\warm-flow-plugin-vue3-ui-1.7.4.jar;D:\JAVA\maven\org\springframework\spring-tx\6.2.8\spring-tx-6.2.8.jar;D:\JAVA\maven\de\codecentric\spring-boot-admin-starter-client\3.4.7\spring-boot-admin-starter-client-3.4.7.jar;D:\JAVA\maven\de\codecentric\spring-boot-admin-client\3.4.7\spring-boot-admin-client-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter\3.4.7\spring-boot-starter-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot\3.4.7\spring-boot-3.4.7.jar;D:\JAVA\maven\org\springframework\boot\spring-boot-starter-logging\3.4.7\spring-boot-starter-logging-3.4.7.jar;D:\JAVA\maven\ch\qos\logback\logback-classic\1.5.18\logback-classic-1.5.18.jar;D:\JAVA\maven\ch\qos\logback\logback-core\1.5.18\logback-core-1.5.18.jar;D:\JAVA\maven\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;D:\JAVA\maven\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;D:\JAVA\maven\org\slf4j\jul-to-slf4j\2.0.17\jul-to-slf4j-2.0.17.jar;D:\JAVA\maven\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;D:\JAVA\maven\org\yaml\snakeyaml\2.3\snakeyaml-2.3.jar;D:\JAVA\maven\jakarta\xml\bind\jakarta.xml.bind-api\4.0.2\jakarta.xml.bind-api-4.0.2.jar;D:\JAVA\maven\net\bytebuddy\byte-buddy\1.15.11\byte-buddy-1.15.11.jar;D:\JAVA\maven\org\objenesis\objenesis\3.3\objenesis-3.3.jar;D:\JAVA\maven\com\vaadin\external\google\android-json\0.0.20131108.vaadin1\android-json-0.0.20131108.vaadin1.jar;D:\JAVA\maven\org\springframework\spring-core\6.2.8\spring-core-6.2.8.jar;D:\JAVA\maven\org\springframework\spring-jcl\6.2.8\spring-jcl-6.2.8.jar org.dromara.DromaraApplication Logging system failed to initialize using configuration from 'classpath:logback-plus.xml' java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.model.processor.AppenderModelHandler - Could not create an Appender of type [com.example.logging.WebSocketAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com.example.logging.WebSocketAppender ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@66eb985d - Failed to traverse model appender ch.qos.logback.core.model.processor.ModelHandlerException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com.example.logging.WebSocketAppender ERROR in ch.qos.logback.core.model.processor.AppenderModelHandler - Could not create an Appender of type [com.example.logging.WebSocketAppender]. ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com.example.logging.WebSocketAppender ERROR in ch.qos.logback.core.model.processor.DefaultProcessor@66eb985d - Failed to traverse model appender ch.qos.logback.core.model.processor.ModelHandlerException: ch.qos.logback.core.util.DynamicClassLoadingException: Failed to instantiate type com.example.logging.WebSocketAppender at org.springframework.boot.logging.logback.LogbackLoggingSystem.reportConfigurationErrorsIfNecessary(LogbackLoggingSystem.java:291) at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:269) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:67)
最新发布
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值