From ef7a337783a591010a0268f66b8717829651ba6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=8D=9A?= Date: Thu, 22 Feb 2024 16:12:56 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ img.png | Bin 0 -> 22459 bytes 2 files changed, 51 insertions(+) create mode 100644 img.png diff --git a/README.md b/README.md index 2404fe8..38ab7bc 100644 --- a/README.md +++ b/README.md @@ -210,3 +210,54 @@ public class DemoController { ``` 可以通过继承IAspect接口实现自定义切面,并通过MethodUtils.proxy(Class clazz, Class aspectClass)方法调用切面 + +## DynamicClass如何在服务器上运行 +因为本地和服务器的差异导致classpath路径不同, +进而使服务上动态编译class时会发生找不到import类的异常, +因此需要对maven编译配置和启动命令做出一定的修改 +### 1. maven编译配置增加如下部分 +```xml + + org.apache.maven.plugins + maven-jar-plugin + + + + + true + + lib/ + + cn.wubo.loaderutiltest.LoaderUtilTestApplication + + + + + + org.apache.maven.plugins + maven-dependency-plugin + + + copy-dependencies + package + + copy-dependencies + + + + ${project.build.directory}/lib + false + false + runtime + + + + +``` +### 2. 执行编译命令,会在jar包的同级目录下生成lib文件夹存放依赖包 +![img.png](img.png) +### 3. 将jar包和lib文件夹上到服务器,并在启动命令中增加`-Dloader.path=lib/` +```shell +java -jar -Dloader.path=lib/ loader-util-test-0.0.1-SNAPSHOT.jar +``` + diff --git a/img.png b/img.png new file mode 100644 index 0000000000000000000000000000000000000000..4140f9ca637ee582f8377c4c73150d0446ddb9fe GIT binary patch literal 22459 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 XSz5#W`fs`KApn4|ur+^V>J|Slwgb_V literal 0 HcmV?d00001 -- Gitee