我正在将我的项目从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',但运气不好。
在github中询问,实际的yguard版本(3.0.0)不支持java 17。现在切换到openjdk 11
截至今天,最新的3.1.0版本声称支持JDK 17。