Though we put a lot of efforts in testing, the last bug in Excelsior JET is yet to be found. If you encountered a bug in the JET Optimizer, or if it crashed while compiling your application, please do the following:
Unrecoverable errors are those preventing the program from further execution, that is, the errors (crashes) that the JET Runtime cannot handle in a meaningful way.
A known example is access violation that occurs when the program attempts to access data at an address to which no memory page is mapped, or transfer control to such a region. If a JET-compiled application runs into such a problem, the Runtime prints the message "JET RUNTIME HAS DETECTED AN UNRECOVERABLE ERROR" and application execution terminates abnormally.
Of course, such problems should never occur in a pure Java application, but, unfortunately, they can and do occur in practice due to:
Furthermore, the conditions that triggered an unrecoverable error are often hard to reproduce. To alleviate the problem, the JET Runtime includes a special diagnostic facility. If an unrecoverable error occurs, the Runtime collects various information about the application state, logs it into a file, and prints an error message referencing that file.
In most cases, you would set properties using the JETVMPROP equation at compile time, or using a VM options file at launch time. See VM Options for details on these and other ways to set system properties and VM options.
Resolution: Use resource packing.
Reason: Application’s heap size is set to adaptive, and there is not enough available physical memory on the system, or the explicit setting is too low.
Resolution: Adjust the application’s heap size setting (see Maximum heap size).
Reason: Your application runs too many threads.
Resolution: Reduce thread stack size:
jc MyApp.jar -stacklimit=100000
The default value of STACKLIMIT may be inspected by running jc in the EQUATIONS submode:
See Chapter Deployment automation for information on deployment of the compiled applications.
Excelsior JET is not able to create a single all-inclusive executable that can be deployed to target machines by simply copying. Instead, JET offers the following deployment options:
See Chapter Deployment automation for information on JET deployment automation facilities.
If you are interested in creating single executables for reasons other than deployment, please contact us via e-mail
and describe your requirements for that feature.