Просмотр исходного кода

修复war包指定解密lib包时,不生效的问题

JustryDeng 3 лет назад
Родитель
Сommit
33c9a3da61
23 измененных файлов с 207 добавлено и 185 удалено
  1. 150 141
      README.md
  2. 1 1
      class-winter-core/pom.xml
  3. 22 9
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/Reverses.java
  4. 1 1
      class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/JarUtil.java
  5. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AllTest.java
  6. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AlreadyProtectedLibs_Test.java
  7. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Debug_Test.java
  8. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/ExcludePrefix_Test.java
  9. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/FinalName_Test.java
  10. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludeLibs_Test.java
  11. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludePrefix_Test.java
  12. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/JvmArgCheck_Test.java
  13. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/OriginJarOrWar_Test.java
  14. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java
  15. 2 2
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/SupportFile_Test.java
  16. 3 3
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Tips_Test.java
  17. 5 5
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/War_Test.java
  18. 1 1
      class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Xml_Test.java
  19. BIN
      class-winter-core/src/test/resources/class-winter-core-2.7.4.jar
  20. BIN
      class-winter-core/src/test/resources/loaderpath测试源码.zip
  21. 1 1
      class-winter-maven-plugin/pom.xml
  22. BIN
      file/3.png
  23. 1 1
      pom.xml

+ 150 - 141
README.md

@@ -8,7 +8,9 @@
   - [解密(启动)](#解密启动)
   - [解密(启动)](#解密启动)
   - [解密参数](#解密参数)
   - [解密参数](#解密参数)
   - [对class-winter本身进行加密](#对class-winter本身进行加密)
   - [对class-winter本身进行加密](#对class-winter本身进行加密)
-  - [巧用loader.path](#巧用loaderpath)
+  - [将已加密的包提供给客户使用](#将已加密的包提供给客户使用)
+    - [方案](#方案)
+    - [示例](#示例)
 
 
 ---
 ---
 
 
@@ -49,7 +51,7 @@
   <plugin>
   <plugin>
       <groupId>com.idea-aedi</groupId>
       <groupId>com.idea-aedi</groupId>
       <artifactId>class-winter-maven-plugin</artifactId>
       <artifactId>class-winter-maven-plugin</artifactId>
-      <version>2.7.3</version>
+      <version>2.7.4</version>
       <!-- 相关配置 -->
       <!-- 相关配置 -->
       <configuration>
       <configuration>
           <!-- <finalName></finalName>-->
           <!-- <finalName></finalName>-->
@@ -80,15 +82,15 @@
   ```
   ```
   注:不必担心信息泄漏问题,使用此方式生成混淆的jar包时,会擦除pom.xml中关于class-winter-plugin的信息。
   注:不必担心信息泄漏问题,使用此方式生成混淆的jar包时,会擦除pom.xml中关于class-winter-plugin的信息。
   
   
-- #### <font face="幼圆" ><font face="幼圆"  color = "#86CA5E">**方式二**</font>:通过 [**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.7.3.jar) 主动加密</font>
+- #### <font face="幼圆" ><font face="幼圆"  color = "#86CA5E">**方式二**</font>:通过 [**class-winter-core.jar**](https://gitee.com/JustryDeng/class-winter/raw/master/class-winter-core/src/test/resources/class-winter-core-2.7.4.jar) 主动加密</font>
 
 
   ```bash
   ```bash
-  java -jar class-winter-core-2.7.3.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
+  java -jar class-winter-core-2.7.4.jar originJarOrWar=${要加密的项目.jar或.war包} includePrefix=${加密范围} [k3=v3 k4=v4 ...]
   # 对于复杂的参数值,可以使用引号引起来
   # 对于复杂的参数值,可以使用引号引起来
   # linux
   # linux
-  java -jar class-winter-core-2.7.3.jar k1='v1' k2='v2'
+  java -jar class-winter-core-2.7.4.jar k1='v1' k2='v2'
   # windows
   # windows
-  java -jar class-winter-core-2.7.3.jar k1="v1" k2="v2"
+  java -jar class-winter-core-2.7.4.jar k1="v1" k2="v2"
   ```
   ```
 
 
 ## <font  face="幼圆" color = "#3399EA" >加密参数</font>
 ## <font  face="幼圆" color = "#3399EA" >加密参数</font>
@@ -273,8 +275,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
   ```bash
   ```bash
   # 假设your-project-encrypted.jar是由class-winter加密后的包,那么你可以这么启动
   # 假设your-project-encrypted.jar是由class-winter加密后的包,那么你可以这么启动
   java -javaagent:/your-project-encrypted.jar -jar /your-project-encrypted.jar
   java -javaagent:/your-project-encrypted.jar -jar /your-project-encrypted.jar
-  # 也可以用class-winter-core-2.7.3.jar
-  # java -javaagent:/class-winter-core-2.7.3.jar -jar /your-project-encrypted.jar
+  # 也可以用class-winter-core-2.7.4.jar
+  # java -javaagent:/class-winter-core-2.7.4.jar -jar /your-project-encrypted.jar
   # 或者指定参数
   # 或者指定参数
   # java -javaagent:/your-project-encrypted.jar=debug=true,password=pwd12345 -jar /your-project-encrypted.jar
   # java -javaagent:/your-project-encrypted.jar=debug=true,password=pwd12345 -jar /your-project-encrypted.jar
   # 参数可以引起来(linux)
   # 参数可以引起来(linux)
@@ -290,8 +292,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.sh文件,在最上面加上
     编辑tomcat/bin/catalina.sh文件,在最上面加上
 
 
     ```bash
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
-    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.7.3.jar=debug=true";
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.4.jar=k1=v1,k2=v2
+    CATALINA_OPTS="$CATALINA_OPTS -javaagent:/class-winter-core-2.7.4.jar=debug=true";
     export CATALINA_OPTS;
     export CATALINA_OPTS;
     ```
     ```
 
 
@@ -300,8 +302,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.sh文件,并写上
     在tomcat/bin目录下创建setenv.sh文件,并写上
 
 
     ```bash
     ```bash
-    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
-    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.7.3.jar=debug=true";
+    # 如果你有参数, 那么 -javaagent:/class-winter-core-2.7.4.jar=k1=v1,k2=v2
+    JAVA_OPTS="$JAVA_OPTS -javaagent:/class-winter-core-2.7.4.jar=debug=true";
     export JAVA_OPTS;
     export JAVA_OPTS;
     ```
     ```
 
 
@@ -310,8 +312,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     编辑tomcat/bin/catalina.bat文件,在@echo off后加上catalina参数
     编辑tomcat/bin/catalina.bat文件,在@echo off后加上catalina参数
 
 
     ```bash
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
-    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.7.3.jar"
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.4.jar=k1=v1,k2=v2
+    set CATALINA_OPTS="-javaagent:D:/class-winter-core-2.7.4.jar"
     ```
     ```
 
 
   - windows方式二
   - windows方式二
@@ -319,8 +321,8 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
     在tomcat/bin目录下创建setenv.bat文件,并写上
     在tomcat/bin目录下创建setenv.bat文件,并写上
 
 
     ```bash
     ```bash
-    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.3.jar=k1=v1,k2=v2
-    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.7.3.jar"
+    rem 如果你有参数, 那么 -javaagent:D:/class-winter-core-2.7.4.jar=k1=v1,k2=v2
+    set JAVA_OPTS="-javaagent:D:/class-winter-core-2.7.4.jar"
     ```
     ```
 
 
 - #### <font  face="幼圆" color = "#86CA5E" >IDE解密(启动)</font>
 - #### <font  face="幼圆" color = "#86CA5E" >IDE解密(启动)</font>
@@ -395,134 +397,141 @@ linux示例:tips='请不要直接使用混淆后的jar/war'</td>
 - <font face="幼圆"  color = "#F53B45">**声明**</font>:因为在`enhance-*`分支里对class-winter本身进行加密时用到了名义上的收费工具allatori(实际上有破解版之类的),所以`enhance-*`分支的代码,本人并未发布至maven官方仓库
 - <font face="幼圆"  color = "#F53B45">**声明**</font>:因为在`enhance-*`分支里对class-winter本身进行加密时用到了名义上的收费工具allatori(实际上有破解版之类的),所以`enhance-*`分支的代码,本人并未发布至maven官方仓库
 
 
 
 
-## <font  face="幼圆" color = "#3399EA" >巧用loader.path</font>
-
-- 需求描述
-
-  已加密的包,如何提供给客户使用?
-
-  - 方案一:class-winter加密时,使用`alreadyProtectedLibs`参数,但是要求客户的项目也需要使用class-winter加密(,哪怕客户的项目什么也不需要加密,也要求客户有使用class-winter这个动作)
-  - 方案二:-Dloader.path与class-winter结合使用
-
-- -Dloader.path方案实现
-
-  - 假设客户依赖了我们的加密包
-
-    ![客户项目](./file/1.png)
-
-  - 客户使用maven插件,打包时将项目代码和依赖的lib分开
-
-    完整pom示例:
-
-    ```xml
-    <?xml version="1.0" encoding="UTF-8"?>
-    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
-        <modelVersion>4.0.0</modelVersion>
-        <parent>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-parent</artifactId>
-            <version>2.7.3</version>
-            <relativePath/> <!-- lookup parent from repository -->
-        </parent>
-        <groupId>com.example</groupId>
-        <artifactId>demo</artifactId>
-        <version>0.0.1-SNAPSHOT</version>
-        <name>demo</name>
-        <description>Demo project for Spring Boot</description>
-        <properties>
-            <java.version>1.8</java.version>
-        </properties>
-        <dependencies>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-web</artifactId>
-            </dependency>
-    
-            <dependency>
-                <groupId>org.projectlombok</groupId>
-                <artifactId>lombok</artifactId>
-                <optional>true</optional>
-            </dependency>
-            <dependency>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-starter-test</artifactId>
-                <scope>test</scope>
-            </dependency>
-    
-            <dependency>
-                <groupId>com.demo</groupId>
-                <artifactId>encrypted-lib-no-pwd</artifactId>
-                <scope>system</scope>
-                <version>1.0.0</version>
-                <systemPath>${pom.basedir}/src/main/resources/lib/encrypted-lib-no-pwd-1.0.0.jar</systemPath>
-            </dependency>
-        </dependencies>
-    
-        <build>
-            <plugins>
-                <plugin>
-                    <groupId>org.springframework.boot</groupId>
-                    <artifactId>spring-boot-maven-plugin</artifactId>
-                    <configuration>
-                        <!-- 指定该Main Class为全局的唯一入口 -->
-                        <mainClass>com.ideaaedi.demo.DemoApplication</mainClass>
-                        <!-- 把systemPath指定的jar包也纳入lib -->
-                        <includeSystemScope>true</includeSystemScope>
-                        <fork>true</fork>
-                        <!-- 设置为ZIP,此模式下spring-boot-maven-plugin会将MANIFEST.MF文件中的Main-Class设置为org.springframework.boot.loader.PropertiesLauncher -->
-                        <layout>ZIP</layout>
-                        <includes>
-                            <include>
-                                <groupId>nothing</groupId>
-                                <artifactId>nothing</artifactId>
-                            </include>
-                        </includes>
-                    </configuration>
-                    <executions>
-                        <execution>
-                            <goals>
-                                <goal>repackage</goal>
-                            </goals>
-                        </execution>
-                    </executions>
-                </plugin>
-    
-                <!-- 通过插件将所有依赖的lib包放到编译后的target/lib目录,并且在打包时候排除内部依赖 -->
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-dependency-plugin</artifactId>
-                    <version>3.2.0</version>
-                    <executions>
-                        <execution>
-                            <id>copy-dependencies</id>
-                            <phase>prepare-package</phase>
-                            <goals>
-                                <goal>copy-dependencies</goal>
-                            </goals>
-                            <configuration>
-                                <outputDirectory>${project.build.directory}/lib</outputDirectory>
-                                <overWriteReleases>false</overWriteReleases>
-                                <overWriteSnapshots>false</overWriteSnapshots>
-                                <overWriteIfNewer>true</overWriteIfNewer>
-                                <includeScope>compile</includeScope>
-                            </configuration>
-                        </execution>
-                    </executions>
-                </plugin>
-            </plugins>
-        </build>
-    
-    </project>
-    ```
+## <font  face="幼圆" color = "#3399EA" >将已加密的包提供给客户使用</font>
+
+### <font  face="幼圆" color = "#86CA5E" >方案</font>
+
+- 方案一(适用于A依赖于encrypted-B.jar,启动A的情况)
+
+  class-winter加密时,使用`alreadyProtectedLibs`参数,但是要求客户的项目也需要使用class-winter加密(,哪怕客户的项目什么也不需要加密,也要求客户有使用class-winter这个动作)
+
+- 方案二(适用于encrypted-A依赖于encrypted-B.jar,启动A的情况
+
+  利用`-Dloader.path`或其它方案,将encrypted-B.jar外置,并通过`decryptProjectPathPrefix`或`skipProjectPathPrefix`来定位encrypted-B.jar
+
+### <font  face="幼圆" color = "#86CA5E" >示例</font>
+
+> 提示:这里以可执行的jar进行的示例,其余的外置方式也是可以的(如:tomcat部署war包解压后,lib包就相当于是外置的)
+
+以`-Dloader.path`实现,将encrypted-B.jar外置到项目包A外
+
+- 假设客户依赖了我们的加密包
+
+  ![客户项目](./file/1.png)
+
+- 客户使用maven插件,打包时将项目代码和依赖的lib分开
+
+  完整pom示例:
+
+  ```xml
+  <?xml version="1.0" encoding="UTF-8"?>
+  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+           xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+      <modelVersion>4.0.0</modelVersion>
+      <parent>
+          <groupId>org.springframework.boot</groupId>
+          <artifactId>spring-boot-starter-parent</artifactId>
+          <version>2.7.4</version>
+          <relativePath/> <!-- lookup parent from repository -->
+      </parent>
+      <groupId>com.example</groupId>
+      <artifactId>demo</artifactId>
+      <version>0.0.1-SNAPSHOT</version>
+      <name>demo</name>
+      <description>Demo project for Spring Boot</description>
+      <properties>
+          <java.version>1.8</java.version>
+      </properties>
+      <dependencies>
+          <dependency>
+              <groupId>org.springframework.boot</groupId>
+              <artifactId>spring-boot-starter-web</artifactId>
+          </dependency>
+  
+          <dependency>
+              <groupId>org.projectlombok</groupId>
+              <artifactId>lombok</artifactId>
+              <optional>true</optional>
+          </dependency>
+          <dependency>
+              <groupId>org.springframework.boot</groupId>
+              <artifactId>spring-boot-starter-test</artifactId>
+              <scope>test</scope>
+          </dependency>
+  
+          <dependency>
+              <groupId>com.demo</groupId>
+              <artifactId>encrypted-lib-no-pwd</artifactId>
+              <scope>system</scope>
+              <version>1.0.0</version>
+              <systemPath>${pom.basedir}/src/main/resources/lib/encrypted-lib-no-pwd-1.0.0.jar</systemPath>
+          </dependency>
+      </dependencies>
+  
+      <build>
+          <plugins>
+              <plugin>
+                  <groupId>org.springframework.boot</groupId>
+                  <artifactId>spring-boot-maven-plugin</artifactId>
+                  <configuration>
+                      <!-- 指定该Main Class为全局的唯一入口 -->
+                      <mainClass>com.ideaaedi.demo.DemoApplication</mainClass>
+                      <!-- 把systemPath指定的jar包也纳入lib -->
+                      <includeSystemScope>true</includeSystemScope>
+                      <fork>true</fork>
+                      <!-- 设置为ZIP,此模式下spring-boot-maven-plugin会将MANIFEST.MF文件中的Main-Class设置为org.springframework.boot.loader.PropertiesLauncher -->
+                      <layout>ZIP</layout>
+                      <includes>
+                          <include>
+                              <groupId>nothing</groupId>
+                              <artifactId>nothing</artifactId>
+                          </include>
+                      </includes>
+                  </configuration>
+                  <executions>
+                      <execution>
+                          <goals>
+                              <goal>repackage</goal>
+                          </goals>
+                      </execution>
+                  </executions>
+              </plugin>
+  
+              <!-- 通过插件将所有依赖的lib包放到编译后的target/lib目录,并且在打包时候排除内部依赖 -->
+              <plugin>
+                  <groupId>org.apache.maven.plugins</groupId>
+                  <artifactId>maven-dependency-plugin</artifactId>
+                  <version>3.2.0</version>
+                  <executions>
+                      <execution>
+                          <id>copy-dependencies</id>
+                          <phase>prepare-package</phase>
+                          <goals>
+                              <goal>copy-dependencies</goal>
+                          </goals>
+                          <configuration>
+                              <outputDirectory>${project.build.directory}/lib</outputDirectory>
+                              <overWriteReleases>false</overWriteReleases>
+                              <overWriteSnapshots>false</overWriteSnapshots>
+                              <overWriteIfNewer>true</overWriteIfNewer>
+                              <includeScope>compile</includeScope>
+                          </configuration>
+                      </execution>
+                  </executions>
+              </plugin>
+          </plugins>
+      </build>
+  
+  </project>
+  ```
 
 
-    打出来的包:
+  打出来的包:
 
 
-    ![打出来的包](./file/2.png)
+  ![打出来的包](./file/2.png)
 
 
-  - 客户可以这样启动项目
+- 客户可以这样启动项目
 
 
-    > `java -Dloader.path=./lib/ -javaagent:./{class-winter.jar} -jar {客户项目.jar}`
+  > `java -Dloader.path=./lib/ -javaagent:./{class-winter.jar} -jar {客户项目.jar}`
 
 
-    ![使用loader.path引入依赖](./file/3.png)
+  ![使用loader.path引入依赖](./file/3.png)
 
 

+ 1 - 1
class-winter-core/pom.xml

@@ -5,7 +5,7 @@
     <parent>
     <parent>
         <groupId>com.idea-aedi</groupId>
         <groupId>com.idea-aedi</groupId>
         <artifactId>class-winter</artifactId>
         <artifactId>class-winter</artifactId>
-        <version>2.7.3</version>
+        <version>2.7.4</version>
     </parent>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
 
 

+ 22 - 9
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/Reverses.java

@@ -1,6 +1,7 @@
 package winter.com.ideaaedi.classwinter;
 package winter.com.ideaaedi.classwinter;
 
 
 import winter.com.ideaaedi.classwinter.author.JustryDeng;
 import winter.com.ideaaedi.classwinter.author.JustryDeng;
+import winter.com.ideaaedi.classwinter.exception.ClassWinterException;
 import winter.com.ideaaedi.classwinter.executor.DecryptExecutor;
 import winter.com.ideaaedi.classwinter.executor.DecryptExecutor;
 import winter.com.ideaaedi.classwinter.util.Cache;
 import winter.com.ideaaedi.classwinter.util.Cache;
 import winter.com.ideaaedi.classwinter.util.Constant;
 import winter.com.ideaaedi.classwinter.util.Constant;
@@ -106,7 +107,16 @@ public class Reverses {
                     }
                     }
                     // 获取类所在的项目运行路径
                     // 获取类所在的项目运行路径
                     String projectPath = protectionDomain.getCodeSource().getLocation().getPath();
                     String projectPath = protectionDomain.getCodeSource().getLocation().getPath();
-                    projectPath = JarUtil.getRootPath(projectPath);
+                    try {
+                        projectPath = JarUtil.getRootPath(projectPath);
+                    } catch (ClassWinterException e) {
+                        // 如果是不能识别的路径,那么看有没有强制指定解密该projectPath
+                        if (isNeedTryDecrypt(decryptProjectPathPrefixSet, projectPath)) {
+                            Logger.info(Reverses.class, "Ignore unknown path[" + e.getMessage() + "].Goon decrypt on projectPath -> " + projectPath);
+                        } else {
+                            return classfileBuffer;
+                        }
+                    }
                     if (StrUtil.isEmpty(projectPath)) {
                     if (StrUtil.isEmpty(projectPath)) {
                         return classfileBuffer;
                         return classfileBuffer;
                     }
                     }
@@ -116,14 +126,7 @@ public class Reverses {
                         }
                         }
                     }
                     }
                     if (decryptProjectPathPrefixSet.size() > 0) {
                     if (decryptProjectPathPrefixSet.size() > 0) {
-                        boolean needTryDecrypt = false;
-                        for (String decryptProjectPathPrefix : decryptProjectPathPrefixSet) {
-                            if (projectPath.startsWith(decryptProjectPathPrefix)) {
-                                needTryDecrypt = true;
-                                break;
-                            }
-                        }
-                        if (!needTryDecrypt) {
+                        if (!isNeedTryDecrypt(decryptProjectPathPrefixSet, projectPath)) {
                             return classfileBuffer;
                             return classfileBuffer;
                         }
                         }
                     }
                     }
@@ -282,6 +285,16 @@ public class Reverses {
             });
             });
         }
         }
     }
     }
+    private static boolean isNeedTryDecrypt(Set<String> decryptProjectPathPrefixSet, String projectPath) {
+        boolean needTryDecrypt = false;
+        for (String decryptProjectPathPrefix : decryptProjectPathPrefixSet) {
+            if (projectPath != null && projectPath.startsWith(decryptProjectPathPrefix)) {
+                needTryDecrypt = true;
+                break;
+            }
+        }
+        return needTryDecrypt;
+    }
     
     
     /**
     /**
      * 退出程序前停几秒,防止以tomcat启动时,太快关闭界面,观察不到日志
      * 退出程序前停几秒,防止以tomcat启动时,太快关闭界面,观察不到日志

+ 1 - 1
class-winter-core/src/main/java/winter/com/ideaaedi/classwinter/util/JarUtil.java

@@ -426,6 +426,6 @@ public final class JarUtil {
         else if (projectPath.contains(Constant.CLASSES_DIR)) {
         else if (projectPath.contains(Constant.CLASSES_DIR)) {
             return projectPath.substring(0, projectPath.indexOf(Constant.CLASSES_DIR) + Constant.CLASSES_DIR.length());
             return projectPath.substring(0, projectPath.indexOf(Constant.CLASSES_DIR) + Constant.CLASSES_DIR.length());
         }
         }
-        throw new ClassWinterException("cannot identify projectPath [" + projectPath + "].");
+        throw new ClassWinterException(projectPath);
     }
     }
 }
 }

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AllTest.java

@@ -18,8 +18,8 @@ import winter.com.ideaaedi.classwinter.util.PathUtil;
 public class AllTest {
 public class AllTest {
     
     
     public static void main(String[] args) {
     public static void main(String[] args) {
-        xmlTest();
-//        otherTest();
+//        xmlTest();
+        otherTest();
         
         
         // 杀下进程(结束拉起的jar程序)
         // 杀下进程(结束拉起的jar程序)
         BashUtil.killProcessByPorts("8080");
         BashUtil.killProcessByPorts("8080");
@@ -77,7 +77,7 @@ public class AllTest {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
         String jvmArgCheck = "-XX:+DisableAttachMechanism";
         String jvmArgCheck = "-XX:+DisableAttachMechanism";
         String debug = "true";
         String debug = "true";
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix
                 + " excludePrefix=" + excludePrefix

+ 2 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/AlreadyProtectedLibs_Test.java

@@ -67,7 +67,7 @@ public class AlreadyProtectedLibs_Test {
         String originJarOrWar = projectRootDir + Constant.LINUX_FILE_SEPARATOR + "my-project-with-encrypted-lib-no-pwd.jar";
         String originJarOrWar = projectRootDir + Constant.LINUX_FILE_SEPARATOR + "my-project-with-encrypted-lib-no-pwd.jar";
         String includePrefix = "non-exist";
         String includePrefix = "non-exist";
         String alreadyProtectedLibs = "encrypted-lib-no-pwd-1.0.0.jar";
         String alreadyProtectedLibs = "encrypted-lib-no-pwd-1.0.0.jar";
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -110,7 +110,7 @@ public class AlreadyProtectedLibs_Test {
         String includePrefix = "non-exist";
         String includePrefix = "non-exist";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd-1.0.0.jar:qwer123~";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs

+ 2 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Debug_Test.java

@@ -36,7 +36,7 @@ public class Debug_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
         String includePrefix = "com";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 ;
                 ;
@@ -64,7 +64,7 @@ public class Debug_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
         String includePrefix = "com";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
                 + " debug=" + true

+ 2 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/ExcludePrefix_Test.java

@@ -38,7 +38,7 @@ public class ExcludePrefix_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
                 + " debug=" + true
@@ -72,7 +72,7 @@ public class ExcludePrefix_Test {
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         String includePrefix = "com.aspire.ssm.util.AesEncryptDecryptUtil,com.aspire.ssm.util.DbSecurityBeanUtil";
         String excludePrefix = "com.aspire.ssm.util.DbSecurityBeanUtil";
         String excludePrefix = "com.aspire.ssm.util.DbSecurityBeanUtil";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix
                 + " excludePrefix=" + excludePrefix

+ 1 - 1
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/FinalName_Test.java

@@ -23,7 +23,7 @@ public class FinalName_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String finalName = "YiYaKaKa";
         String finalName = "YiYaKaKa";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " finalName=" + finalName
                 + " finalName=" + finalName

+ 1 - 1
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludeLibs_Test.java

@@ -42,7 +42,7 @@ public class IncludeLibs_Test {
         String includePrefix = "org.springframework.aop.target.dynamic,com.google.common.xml";
         String includePrefix = "org.springframework.aop.target.dynamic,com.google.common.xml";
         String includeLibs = "spring-aop-5.1.8.RELEASE.jar,guava-28.2-jre.jar";
         String includeLibs = "spring-aop-5.1.8.RELEASE.jar,guava-28.2-jre.jar";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " includeLibs=" + includeLibs
                 + " includeLibs=" + includeLibs

+ 1 - 1
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/IncludePrefix_Test.java

@@ -39,7 +39,7 @@ public class IncludePrefix_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util";
         String includePrefix = "com.aspire.ssm.util";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
                 + " debug=" + true

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/JvmArgCheck_Test.java

@@ -33,7 +33,7 @@ public class JvmArgCheck_Test {
     
     
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg
                 + " jvmArgCheck=" + jvmArg
@@ -65,7 +65,7 @@ public class JvmArgCheck_Test {
     
     
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         String jvmArg = "-XX:+DisableAttachMechanism,-Xms1024M";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg
                 + " jvmArgCheck=" + jvmArg
@@ -97,7 +97,7 @@ public class JvmArgCheck_Test {
     
     
         String jvmArg = "-XX:+DisableAttachMechanism";
         String jvmArg = "-XX:+DisableAttachMechanism";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " jvmArgCheck=" + jvmArg
                 + " jvmArgCheck=" + jvmArg

+ 2 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/OriginJarOrWar_Test.java

@@ -32,7 +32,7 @@ public class OriginJarOrWar_Test {
         String originJarOrWar = projectRootDir + "non-exist.jar";
         String originJarOrWar = projectRootDir + "non-exist.jar";
         String includePrefix = "com.aspire.ssm.util";
         String includePrefix = "com.aspire.ssm.util";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
                 + " debug=" + true
@@ -58,7 +58,7 @@ public class OriginJarOrWar_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com.aspire.ssm.util";
         String includePrefix = "com.aspire.ssm.util";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " debug=" + true
                 + " debug=" + true

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Password_Test.java

@@ -34,7 +34,7 @@ public class Password_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String password = "pwd123";
         String password = "pwd123";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " password=" + password
                 + " password=" + password
@@ -65,7 +65,7 @@ public class Password_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String password = "pwd123";
         String password = "pwd123";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " password=" + password
                 + " password=" + password
@@ -97,7 +97,7 @@ public class Password_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String password = "pwd123";
         String password = "pwd123";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " password=" + password
                 + " password=" + password

+ 2 - 2
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/SupportFile_Test.java

@@ -42,7 +42,7 @@ public class SupportFile_Test {
         String originJarOrWar = projectRootDir + "normal-jar.jar";
         String originJarOrWar = projectRootDir + "normal-jar.jar";
         String includePrefix = "com";
         String includePrefix = "com";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 ;
                 ;
@@ -62,7 +62,7 @@ public class SupportFile_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String supportFile = projectRootDir + "help";
         String supportFile = projectRootDir + "help";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " supportFile=" + supportFile
                 + " supportFile=" + supportFile

+ 3 - 3
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Tips_Test.java

@@ -32,7 +32,7 @@ public class Tips_Test {
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String originJarOrWar = projectRootDir + "boot-jar.jar";
         String includePrefix = "com";
         String includePrefix = "com";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 ;
                 ;
@@ -55,8 +55,8 @@ public class Tips_Test {
         String tips = "[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深...";
         String tips = "[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深...";
     
     
         // 如果tips值由一些特殊字符(如空格等)的话,可以用windows双引号(linux单引号)引起来。
         // 如果tips值由一些特殊字符(如空格等)的话,可以用windows双引号(linux单引号)引起来。
-        // java -jar class-winter-core-2.7.3.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        // java -jar class-winter-core-2.7.4.jar originJarOrWar=/boot-jar.jar includePrefix=com tips="[潘嘎之交] 潘: 你别怪潘叔说话比较直白, 网络上的东西都是虚拟的, 你把握不住, 孩子! 因为这里的水很深..."
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " tips=" + (BashUtil.IS_WINDOWS ? "\"".concat(tips).concat("\"") : "'".concat(tips).concat("'"));
                 + " tips=" + (BashUtil.IS_WINDOWS ? "\"".concat(tips).concat("\"") : "'".concat(tips).concat("'"));

+ 5 - 5
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/War_Test.java

@@ -34,7 +34,7 @@ public class War_Test {
         String originJarOrWar = projectRootDir + "war-project.war";
         String originJarOrWar = projectRootDir + "war-project.war";
         String includePrefix = "com";
         String includePrefix = "com";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 ;
                 ;
@@ -62,7 +62,7 @@ public class War_Test {
         String includePrefix = "com";
         String includePrefix = "com";
         String password = "123456";
         String password = "123456";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " password=" + password
                 + " password=" + password
@@ -93,7 +93,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-no-pwd.jar";
         String alreadyProtectedLibs = "encrypted-lib-no-pwd.jar";
         String password = "oop857857";
         String password = "oop857857";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -124,7 +124,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String password = "yiyakaka";
         String password = "yiyakaka";
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
                 + " alreadyProtectedLibs=" + alreadyProtectedLibs
@@ -160,7 +160,7 @@ public class War_Test {
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String alreadyProtectedLibs = "encrypted-lib-have-pwd.jar:qwer123~";
         String debug = "true";
         String debug = "true";
     
     
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " excludePrefix=" + excludePrefix
                 + " excludePrefix=" + excludePrefix

+ 1 - 1
class-winter-core/src/test/java/winter/com/ideaaedi/classwinter/Xml_Test.java

@@ -31,7 +31,7 @@ public class Xml_Test {
         String toCleanXmlChildElementName = "select";
         String toCleanXmlChildElementName = "select";
         
         
         
         
-        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.3.jar"
+        String startBat = "java -jar " + projectRootDir + "class-winter-core-2.7.4.jar"
                 + " originJarOrWar=" + originJarOrWar
                 + " originJarOrWar=" + originJarOrWar
                 + " includePrefix=" + includePrefix
                 + " includePrefix=" + includePrefix
                 + " includeXmlPrefix=" + includeXmlPrefix
                 + " includeXmlPrefix=" + includeXmlPrefix

BIN
class-winter-core/src/test/resources/class-winter-core-2.7.4.jar


BIN
class-winter-core/src/test/resources/loaderpath测试源码.zip


+ 1 - 1
class-winter-maven-plugin/pom.xml

@@ -5,7 +5,7 @@
     <parent>
     <parent>
         <groupId>com.idea-aedi</groupId>
         <groupId>com.idea-aedi</groupId>
         <artifactId>class-winter</artifactId>
         <artifactId>class-winter</artifactId>
-        <version>2.7.3</version>
+        <version>2.7.4</version>
     </parent>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <modelVersion>4.0.0</modelVersion>
 
 


+ 1 - 1
pom.xml

@@ -9,7 +9,7 @@
     </modules>
     </modules>
     <groupId>com.idea-aedi</groupId>
     <groupId>com.idea-aedi</groupId>
     <artifactId>class-winter</artifactId>
     <artifactId>class-winter</artifactId>
-    <version>2.7.3</version>
+    <version>2.7.4</version>
 
 
     <!-- 配置项目的基础信息 -->
     <!-- 配置项目的基础信息 -->
     <name>class-winter</name>
     <name>class-winter</name>