PreEmptive Protection - DashO can be used with Java 9 in certain circumstances, as documented below. Outside those circumstances, DashO may not perform as expected or the app might have issues at run time. If your use of DashO with Java 9 is within the documented circumstances, PreEmptive will provide full support for any issues that may arise.
DashO’s support for Java 9 will continue to improve with each release. See our blog post for more information.
DashO can be run with the Java 9 JDK, but not the JRE. It will generate an error explaining the issue if you run with the JRE. If you have installed a Java 9 JDK, you may have inadvertently installed the JRE as well. See the Configuring the Launcher section for information about configuring the Java runtime in which DashO launches.
Support libraries containing Java 9 class files will be processed, however any
module-info.class files will not be evaluated for class references or module dependencies.
Inputs containing Java 9 class files will be processed if you opt in to Java 9 support.
Note: You must run DashO with the Java 9 JDK for it to process Java 9 class files. DashO can still be run with Java 7 or 8 when Java 9 classes are not used.
There are currently some limitations on how DashO processes Java 9 files. These limitations will be resolved in future DashO releases.
Java 9 Modules 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.
Java 9 changed how concatenated strings are compiled.
Concatenated strings (e.g.
"Welcome, " + name + ", to string concatenation.") will not be encrypted, by default. (Non-concatenated strings will be encrypted, as usual.)
-XDstringConcat=indy, as described in JEP-280, will allow DashO string encryption to work as it does for Java 8 and earlier.
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.
Support for Java 9 is disabled by default, to ensure that you don’t encounter unintentional or unexpected build results.
To process Java 9 classes, opt-in by adding a new User Property named
PROVISIONAL_JAVA9_SUPPORT and setting it to
Note: This property will be ignored once support is no longer provisional.