Jump to content
Excelsior Forums


Excelsior Staff
  • Content count

  • Joined

  • Last visited


Posts posted by ppavlov

  1. Please send an example to reproduce the problem to Support Dept. (java at excelsior-usa.com).

    Also send your JET project files (*.prj, *.jpn) and the Java command line that you use to start your application on the standard JRE. We will check if the settings are correct.

    We will examine the problem on our end and post a follow-up with the results in this topic.

  2. Hi,

    As you can see in the Java SE API documentation, these 3 methods (Math.asin, Math.acos, Math.atan) need not produce the same results on different VM implementations.

    The only constraint is: "The computed result must be within 1 ulp of the exact result.  Results must be semi-monotonic." (see http://java.sun.com/javase/6/docs/api/java/lang/Math.html#asin(double))

    If you want to get the same bitwise results, you should use methods of java.lang.StrictMath instead.

    I have investigated the differences between JET and Sun HotSpot, compared the results with high precision (112-bit mantissa) results obtained with HPAlib library (http://www.nongnu.org/hpalib/) and confirm that JET implementation of these methods is correct according to java.lang.Math specification.


    Pavel Pavlov.

  3. Hi,

    What do you mean by 'application launchers'?

    If by 'SWT applications with application launchers' you mean SWT applications based on OSGi/Eclipse RCP, then read the answer below:

    Starting from version 6.5, Excelsior JET Enterprise Edition supports AOT compilation of Eclipse RCP applications.

    As regards to SWT applications which are not based on OSGi/Eclipse RCP runtime they are supported by Excelsior JET as well as any other plain Java SE applications.

    To compile plain Java SE application with JET you should first setup JET project either with JET Launcher


    or with JET Control Panel


    (select 'Plain Java SE application' on the Welcome Screen)



  4. Hello,

    First of all, we have never encountered such errors before.

    We have looked at JET runtime code which reports "RegisterClassEx failed" error and found that such situation is definitely not a bug in JET. It may happen because of erroneous OS behavior or influence of 3rd-party system tools.

    It seems that this version of Norton Antivirus afects JET-compiled programs negatively.

    To get the application to work please ask user to install other antivirus software.

    Also he can try to re-install JET-compiled application.



  5. Hello,

    Are you sure that you correctly wrote the file name "C:/jet-eval-en-15-1.5.0_06.pjp"? It seems very strange - installer should not create any files in C:/ root directory.

    Have you seen the small window with the text "Finishing setup. Please wait..." at the end of installation?

    Do you have any active anti-virus monitors on your machine?

    Also please check that you have enough free space (at least 500-700 Mb) on your hard drive.

  6. Hello,

    It is stack overflow in non-Java method i.e. in native or some auxiliary thread. You can try to increase stack size for your application (in LaunchPad at page "Options" tab "Advanced").

    If it will not help - please write what version of Excelsior JET are you using?

    What OS are you using? Please provide its exact version, names of updates applied, etc.

    If the OS is Linux, also send us its kernel version, glibc version, the output of command "uname -a".

    Also, please, explain how we can reproduce the problem.

    It would be very helpful if you send us a sample program reproducing the crash.

  7. Hello,

    With the current version of Excelsior JET there is no way to reduce the download size.

    Due to Sun license restrictions,  Java platform API (and thus JET runtime DLLs) cannot be subset even though its large parts are not used by the application.

    In other words, smart linking like that for C/C++ cannot help.

    Please note that we are currently working on the download size reduction. The next version 4.5 of Excelsior JET gives a solution to reduce the download size. JET4.5 features a new build mode, which allows to compile application classes together with the required Java platform classes into a single executable.

    The platform classes that were not compiled are packaged into a jar and then effectively compressed. This new build mode can improve application start up time and performance, reduce the download size.

    Please take a look at the following numbers:

    Sizes of packages to be delivered to customers (complete Java SE 5.0 implementation were used):

    SwingSet2 11MB

    SwtExample 10MB

    jAlbum 16MB

    You can try this new feature in JET 4.5 beta http://www.excelsior-usa.com/beta.html.  For more information, see <http://www.excelsior-usa.com/jetroadmap.html>.

    However, package size of 1MB is absolutely impossible for standalone application (i.e. independent of JRE presence on the target machine) with the current Sun's license policy.



  8. Hello,

    We have no ideas why it occurs.

    So the only thing we can offer is to try to reproduce it and to debug it by ourselves.

    We can do that locally or via remote access.

    So we can propose you two options:

    1. Provide us with the application bytecode, input data and scenario on which the problem can be reproduced. We may sign a non-disclosure agreement on request. We do not need the full application and real data. If the problem can be reproduced on a scaled down version of the application and/or on some "fake" data, that would be sufficient.

    2. Set up remote access so that we could run the application under the debugger right on the client's system. We may sign a non-disclosure agreement on request.



  9. Hello,

    -Xmx analogue in JET is jet.gc.heaplimit runtime property.

    You can set it at application launch time by setting JETVMPROP environment variable (it will affect all JET-compiled applications on user's machine) or by running the application through batch file like this:


    SET JETVMPROP=-Djet.gc.heaplimit:100m

    App.exe arg1 arg2


    Please look there to find more information about JET runtime properties:


    and ways to specify them:




  10. Hello,

    NoClassDefFoundError was a bug in evaluation version of xFunction.

    You can re-download xFunction from the website to get the fixed version.

    As regards to calling functions with three-parameters, you are right - it's restriction of evaluation version.

    Unfortunately, we have no evalution version without this restriction. If you absolutely cannot test xFunction without such restriction then I recommend you to buy a license and to request refund if you'll find the product inappropriate for your needs.



  11. Hello,

    The signature of the function you need is:

    BOOL WINAPI SetProcessWorkingSetSize(

      HANDLE hProcess,

      SIZE_T dwMinimumWorkingSetSize,

      SIZE_T dwMaximumWorkingSetSize


    As HANDLE and SIZE_T are both 32-bits wide in WIN32 you should use this signature in xFunction:

    "int SetProcessWorkingSetSize (int, int, int)"



  12. Is it correct that you can't use dynamic libraries (multi-components) with dynamic classloaders?

    Not at all. Quite opposite: use of dynamic classloader force you to use JIT cache DLLs. However these JIT cache DLLs differ from ordinary DLLs: JIT cache DLLs require original classes to be loaded.

    In your example of compiling eclipse, one of the steps is to start the application and use as much functionality of the application as possible.? This is probaly impractical for any sort of automated build system.? Is is sufficent for a class to be referenced in order to be compiled & cached?

    All classes referenced from already loaded classes will be cached and compiled together with these loaded classes.

    Does it have to be referenced through every context that it would normally be loaded through?? i.e. Could I write one routine which references every class in the application or would I have to write such a routine in every context with a custom classloader?

    Such routine should be classloader-specific:

    For any custom classloader used in the application, an individual routine should exist that loads only those classes which might be loaded by the classloader.



  13. Hello,

    Unfortunately, this feature will not be implemented in the next release (JET 4.5) and we are not sure about its availability in the following JET version.

    However, we are keeping in mind such special support for Eclipse plugins and we would like to find some resources to allocate for work on this feature during this year :).

    By the way, you can check out Excelsior JET Roadmap to get some info on following JET releases:




  14. Hello,

    Can you provide us a sample demonstrating this misbehavior?

    In general, we cannot investigate an issue in a large application based just on a error message or verbal description of the misbehavior. We need to find the exact place in the application's code that works incorrectly, and track it down to a problem in the JET compiler, in the JET runtime, or in the application itself (yes, we had such cases). In order to do that, we need to be able to reproduce the problem.

  15. Hello,

    There is a limitation of 260 characters for the file path in Windows.

    Excelsior JET stores its temporary files (*.sym, *.bod, *.obj) with the names based on the class names.

    Note, that uppercase characters are mangled with the tilde character ('~'), to avoid file names collision, as the Java class names are case-sensitive, and Windows file system is case-insensitive.

    We have plans to reimplement this functionality and change the naming scheme to less error-prone one.

    But now we have a tight schedule for JET4.5 and I have no idea when this issue will be resolved.

    As for now, you can try to use work directory with a shorter path for compilation of your application with JET.