A lot has been changed in approach to Java compilation of MPS modules. We started this change to address one of our top-voted issues, Annotation Processing support (https://youtrack.jetbrains.com/issue/MPS-27653). We switched MPS Java Compiler infrastructure to utilise
javax.tools.JavaCompiler set of APIs. Now, MPS can use any compiler that implements this standard API, as of MPS 2021.1 we run with a default compiler configured for the API, with an option to use Eclipse Java Compiler, if present. When ECJ libraries are in classpath, you may switch MPS to use Eclipse Java Compiler with '
mps.compiler.java=ecj' as the system property (e.g. by editing 'mps.vmpoptions'). In case you experience unrecoverable issues using new compiler infrastructure, there's also an option to switch back to legacy mechanism of direct ECJ API use, put 'ecjlegacy' as the value for '
mps.compiler.java' system property.
Beside, now we run compiler with '
-release' option, with version specified in project preferences (Preferences -> Java Compiler). This option is a bit more strict than combination of
-target options MPS relied on in previous releases, as it controls uses of library APIs that were available in certain releases. You may need to bump up Java version in your project in case you encounter compilation issues due to use of APIs not available in certain release.