diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/MemShellGenerator.java b/generator/src/main/java/com/reajason/javaweb/memshell/MemShellGenerator.java index d6c2a0a7..3078e810 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/MemShellGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/MemShellGenerator.java @@ -46,6 +46,11 @@ public class MemShellGenerator { injectorConfig.setInjectorClassName(CommonUtil.generateInjectorClassName()); } + if (shellConfig.isLambdaSuffix()) { + shellToolConfig.setShellClassName(CommonUtil.appendLambdaSuffix(shellToolConfig.getShellClassName())); + injectorConfig.setInjectorClassName(CommonUtil.appendLambdaSuffix(injectorConfig.getInjectorClassName())); + } + byte[] shellBytes = ShellToolFactory.generateBytes(shellConfig, shellToolConfig); injectorConfig.setInjectorClass(injectorClass); diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/config/ShellConfig.java b/generator/src/main/java/com/reajason/javaweb/memshell/config/ShellConfig.java index 897b6671..7e226a5b 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/config/ShellConfig.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/config/ShellConfig.java @@ -61,6 +61,12 @@ public class ShellConfig { @Builder.Default private boolean shrink = false; + /** + * 追加 Lambda 类名后缀 + */ + @Builder.Default + private boolean lambdaSuffix = false; + public boolean isDebugOff() { return !debug; } diff --git a/generator/src/main/java/com/reajason/javaweb/probe/ProbeShellGenerator.java b/generator/src/main/java/com/reajason/javaweb/probe/ProbeShellGenerator.java index c3069988..8847d5e5 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/ProbeShellGenerator.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/ProbeShellGenerator.java @@ -15,6 +15,9 @@ public class ProbeShellGenerator { if (StringUtils.isBlank(probeConfig.getShellClassName())) { probeConfig.setShellClassName(CommonUtil.generateInjectorClassName()); } + if (probeConfig.isLambdaSuffix()) { + probeConfig.setShellClassName(CommonUtil.appendLambdaSuffix(probeConfig.getShellClassName())); + } byte[] bytes = probeConfig.getProbeMethod().generateBytes(probeConfig, contentConfig); return ProbeShellResult.builder() .shellClassName(probeConfig.getShellClassName()) diff --git a/generator/src/main/java/com/reajason/javaweb/probe/config/ProbeConfig.java b/generator/src/main/java/com/reajason/javaweb/probe/config/ProbeConfig.java index 7d817d6a..1b39c9b5 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/config/ProbeConfig.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/config/ProbeConfig.java @@ -53,6 +53,12 @@ public class ProbeConfig { @Builder.Default private boolean staticInitialize = false; + /** + * 追加 Lambda 类名后缀 + */ + @Builder.Default + private boolean lambdaSuffix = false; + public boolean isDebugOff() { return !debug; } diff --git a/generator/src/main/java/com/reajason/javaweb/utils/CommonUtil.java b/generator/src/main/java/com/reajason/javaweb/utils/CommonUtil.java index 44349bd4..b3f9c690 100644 --- a/generator/src/main/java/com/reajason/javaweb/utils/CommonUtil.java +++ b/generator/src/main/java/com/reajason/javaweb/utils/CommonUtil.java @@ -101,6 +101,13 @@ public class CommonUtil { return getRandomPackageName() + "." + INJECTOR_CLASS_NAMES[new Random().nextInt(INJECTOR_CLASS_NAMES.length)]; } + public static String appendLambdaSuffix(String className) { + if (className.contains("$Lambda$")) { + return className; + } + return className + "$Proxy0$$Lambda$1"; + } + public static String generateShellClassName(String server, String shellType) { String packageName; switch (server) { diff --git a/web/app/components/memshell/main-config-card.tsx b/web/app/components/memshell/main-config-card.tsx index 8e76f548..ca483dcb 100644 --- a/web/app/components/memshell/main-config-card.tsx +++ b/web/app/components/memshell/main-config-card.tsx @@ -358,7 +358,7 @@ export default function MainConfigCard({ )} /> -