Java 9 and Later
PreEmptive Protection - DashO can be used with Java 9 and Java 10, with limitations as documented below.
DashO’s support for Java 9 (and later versions) will continue to improve with each release. See our blog post for more information.
DashO can be run with Java 9 or Java 10.
However, you cannot use the
Append current Java runtime setting.
You must include the JDK instead.
Inputs and support libraries containing Java 9 or Java 10 class files will be processed.
module-info.class files in support libraries will not be evaluated for class references or module dependencies, and support for modules as inputs is limited.
There are currently some limitations on how DashO handles some Java 9 and 10 features. These limitations will be resolved in future DashO releases.
Java Modules, introduced in Java 9, will not be interpreted as modules by DashO; they will be treated as standard jar files.
DashO will neither update nor use the information in
If processing a module as an input:
- Configure DashO to not rename or remove the classes and packages referenced by the
- Auto copy must be enabled to ensure that the
module-info.classis copied to the output.
- Make sure to use a package prefix if you configure renaming to flatten packages.
- If you are flattening packages for a module, it must be the only input so that the prefixed package will not exist in more than one module.
Because of these limitations, support for Java Modules is disabled by default to ensure that you don't encounter unintentional or unexpected build results.
To process Java Modules as inputs, opt-in by adding a new User Property named
PROVISIONAL_MODULE_SUPPORT and setting it to
Note: This property will be ignored once support is no longer provisional.
Introduced in Java 9,
invokedynamic-based string concatenation (described in JEP-280) may pass string constants to a bootstrap method.
DashO string encryption does not currently support this.
Constant strings when concatenated with non-constant values (e.g.
"Welcome, " + name + ", to string concatenation.") will not be encrypted, by default.
DashO will issue a warning, only once per build, if this issue is encountered.
This issue does not affect classes compiled for Java 8 (and earlier) running on a Java 9 (or later) JVM.
-XDstringConcat=indy, as described in JEP-280, will allow DashO string encryption to work as it does for Java 8, and earlier.
The older Gradle integrations will output warnings (e.g.
WARNING: An illegal reflective access operation...) when run with Java 9, or later.
Those warnings can be ignored.
DashO will generate a build error if a multi-release jar is configured as an input.
Note: If used as a support library, you will see a
Duplicate classwarning which can be ignored.