yguard: Ошибка обфускации класса java. Неподдерживаемый файл класса, основная версия 61.
Я переключаю свой проект с 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», но безуспешно.
2 ответа
На вопрос в github, актуальная версия yguard (3.0.0) не поддерживает java 17. К настоящему времени переключился на openjdk 11.
На сегодняшний день последняя версия 3.1.0 утверждает, что поддерживает JDK 17.