0

我正在将我的项目从 jdk1.8 切换到 openjdk 17。代码工作正常,ANT 可以生成可执行的 jar。使用 Eclipse IDE。

尝试使用 yguard 3.0.0(通过 ant)进行混淆时会出现问题。任务是:

<target depends="create_javafx_jar" name="ofuscaJars2">     
        
      <taskdef name="yguard" classname="com.yworks.yguard.YGuardTask" classpath="${yguard}"/>
        
      <echo level="info" message="OFUSCANDO JAR v2..." />       
        
        <if>
          <available file="${dir.jarfile}/assistcontrol.jar" type="file" />
          <then>            
          </then>
          <else>
            <fail message="Fichero ${dir.jarfile}/assistcontrol.jar no existe" />
          </else>
        </if>
                
         <yguard>           
            <inoutpair in="${dir.jarfile}/assistcontrol.jar"  out="${dir.obfuscatejar}/assistcontrol.jar" />
            
            <shrink logfile="${shrinklog}">
                <keep>
                    <!-- main method -->
                    <method name="void main(java.lang.String[])" class="core.MainClass" />
                </keep>
            </shrink>
            
            <externalclasses description="JARs que son invocados por AssistControl, deben tenerse en cuenta en la ofuscación">
                <fileset dir="${dir.jarfile}/jars">
                    <include name="**/*.jar"/>
                </fileset>          
            </externalclasses>
            
            <rename mainclass="core.MainClass" logfile="${dir.obfuscatejar}/renaming.xml" replaceClassNameStrings="true">          
                  <property name="error-checking" value="pedantic"/>
            </rename>
          </yguard>
    </target>

输出是:

[收缩] 错误:不支持的类文件主要版本 61 [收缩] 不支持的类文件主要版本 61

我知道 61 意味着 java 17,所以我尝试将工作区合规性更改为“编译器合规性级别 - > 11”,但没有运气。

4

2 回答 2

0

截至今天,最新的 3.1.0 版本声称支持 JDK 17。

于 2022-03-01T16:04:01.383 回答
0

在github中询问,实际的yguard版本(3.0.0)不支持java 17。现在切换到openjdk 11。

于 2021-09-29T06:15:24.700 回答