GroupDocs.Comparison for Java 26.8.1 Release Notes

Hotfix release.

Full list of changes in this release

IDSummaryCategory
COMPARISONJAVAMetered and file license activation no longer fails with IllegalAccessError (Aspose.Tasks licensing resource restored in the packaged jar)Fix
COMPARISONJAVAPublic API lost to obfuscation is available again: ILogger, ConsoleLogger, CultureInfo, FontsHelper, Path, TemporaryFileManager, DefaultTemporaryFileManager, TemporaryFileManagerFactory, IgnoreChangeSensitivitySettingsFix
COMPARISONJAVAComparerSettings(ILogger), ComparerSettings.getLogger()/setLogger(), ComparisonLogger.setLogger(), CompareOptions.getIgnoreChangeSettings()/setIgnoreChangeSettings(), SupportedLocales.isLocaleSupported(CultureInfo) are available againFix

Fix — license activation failed with IllegalAccessError

Applying a license on 26.8.1 could fail with a message-less java.lang.IllegalAccessError thrown out of Metered.setMeteredKey (and from file/stream license activation as well), after authentication had already succeeded.

Caused by: java.lang.IllegalAccessError
    at com.groupdocs.comparison.internal.c.a.t.rr.a(Unknown Source)
    at com.groupdocs.comparison.internal.c.a.t.rr.<clinit>(Unknown Source)
    at com.groupdocs.comparison.internal.c.a.t.Mm.<clinit>(Unknown Source)
    at com.groupdocs.comparison.internal.c.a.t.bX.setLicense(Unknown Source)
    ...
    at com.groupdocs.comparison.license.License.BiV(Unknown Source)
    at com.groupdocs.comparison.license.Metered.setMeteredKey(Unknown Source)

Cause. Applying a license reaches the bundled Aspose.Tasks engine, which loads one of its own resources from a path it assembles at run time rather than from a string constant. Because the path is built dynamically, the packaging step that moves the bundled engines into the com.groupdocs.comparison.internal namespace could not rewrite it, so the lookup missed the moved file and the resulting failure surfaced as an IllegalAccessError with no message. The packaged jar now ships that resource at the path the engine actually requests.

Scope.

  • Affects 26.8.1 only. 26.5 and earlier are not affected.
  • No API or configuration changes. No user code changes are required.
  • If you applied the workaround of copying New project 2010.zip onto your application classpath at com/aspose/tasks/resources/, you can remove it — it is no longer needed, and keeping it does no harm.
  • Reported on the forum: license activation crash on 26.8.1. (COMPARISONJAVA)

Fix — public API restored in the obfuscated jar

Several public types and members were being renamed by obfuscation instead of being kept, so code using them did not compile against the published jar. They are exported again under their documented names.

Restored types:

  • com.groupdocs.comparison.logging.ILogger, com.groupdocs.comparison.logging.ConsoleLogger
  • com.groupdocs.comparison.utils.CultureInfo
  • com.groupdocs.comparison.utils.common.FontsHelper, com.groupdocs.comparison.utils.common.Path
  • com.groupdocs.comparison.common.tempfiles.TemporaryFileManager, DefaultTemporaryFileManager, TemporaryFileManagerFactory
  • com.groupdocs.comparison.options.IgnoreChangeSensitivitySettings

Restored members:

  • ComparerSettings(ILogger), ComparerSettings.getLogger(), ComparerSettings.setLogger(ILogger)
  • ComparisonLogger.setLogger(ILogger) — previously reachable only through an obfuscated name that changed from release to release
  • CompareOptions.getIgnoreChangeSettings(), CompareOptions.setIgnoreChangeSettings(...)
  • SupportedLocales.isLocaleSupported(CultureInfo)

Configuring a custom logger works as documented again:

import com.groupdocs.comparison.logging.ComparisonLogger;
import com.groupdocs.comparison.logging.ConsoleLogger;

ComparisonLogger.setLogger(new ConsoleLogger(false, true, true, true));

Scope.

  • Present since 25.2 and affecting 25.2, 26.5 and 26.8.1. Code written against 24.7 or earlier compiles again without changes.
  • Additive only — nothing was removed or renamed, so no migration is needed.
  • Comparison results are unchanged; this is a packaging fix. (COMPARISONJAVA)

Resources