B4J Question B4JPackager11 creates a small exe that does not run standalone

Discussion in 'B4J Questions' started by Didier9, Mar 12, 2019.

  1. Didier9

    Didier9 Active Member Licensed User

    Using B4JPackager11 version 1.02 to create a standalone exe. The process completes with no error but the resulting exe is very small and only runs on the machine that created it. It does not run on another machine configured similarly (Windows 7, corporate environment, Openjdk-11.0.1 with javafx, B4J v7.31)
    Note the "Looking for..." statements have been added by me, that's the only change I made from the B4JPackager11 v1.02 distribution.

    Attached Files:

  2. Erel

    Erel Administrator Staff Member Licensed User

    Everything looks good. What happens when you double click on the exe file (in that folder)?

    Edit: explanation - the exe file will not run without the other folders. You have two options:

    1. Create a zip file with the files and folders and distribute it.
    2. Create an installer using Inno Setup. There should be a file named InstallerScript-Template.iss in that folder with the installer script.
    Last edited: Mar 12, 2019
  3. OliverA

    OliverA Well-Known Member Licensed User

    May not be related/have nothing to do with this: Do you by chance have #MergeLibraries set to False?
    BillMeyer likes this.
  4. Erel

    Erel Administrator Staff Member Licensed User

    The exe file in the build folder is expected to be small. It is just a launcher that starts the embedded Java with the program jar. You can see it in the bin folder.

    I've answered @Didier9 in the previous thread and told him that the exe file should be large. I was talking about the installer exe file. The one that produced with Inno Setup.
    OliverA likes this.
  5. Didier9

    Didier9 Active Member Licensed User

    If I run it on the computer that created it, exactly from the location where B4JPackager11 put it, the program runs.
    If I move the exe to another location on the same computer, it does not run. I get the two messages attached (one is by running the exe, the other by running the debug batch file).
    I copied the exe to another computer (same Win7 64 bits, same Openjdk-11.0.1, same B4J installation but I did not copy the other folders), I get the two messages attached.
    It makes no difference if I have the exe by itself or if I copy all the folders created by B4JPackager11 in the same folder (as shown in the "exe size" screenshot in the first message).

    Attached Files:

  6. Didier9

    Didier9 Active Member Licensed User

    I do not see a program jar in any of the folders created by B4JPackager11. There are ony 2 jar files, javafx-swt.jar and jrt-fs.jar in the lib folder.

    However, if I copy the entirety of the temp folder to another location on the same computer, the program starts (the temp folder has a jar.jar file that is ~3MB). So I thought I had it...

    But if I copy the entire temp folder to another computer (same OS,, same jdk, same B4J installation) and try to run the exe from there, I get the same error as above (cannot find the main class)
  7. Daestrum

    Daestrum Well-Known Member Licensed User

    There are three stages of producing a java11 program for use on another machine.

    1, Write the code and debug in the IDE until you are satisfied it is correct.

    2, Use the B4JPackager11 to produce modularised jar.

    3, Use the inno Setup program, using the InstallerScript-Template.iss in the temp folder of the B4JPackeger11 folder, to produce a standalone installer with the required Java runtime in it.
  8. Erel

    Erel Administrator Staff Member Licensed User

    As written 3 times in this thread, the executable is just a small launcher. It should work if you copy the entire temp folder. I guess that it wasn't copied properly.

    If you want to build an installer then use Inno Setup with the installer template.
  9. Didier9

    Didier9 Active Member Licensed User

    I copied the entire temp folder to the second computer (same OS, same B4J installation which runs the software fine from under B4J in debug or release mode) and tried to run the exe.
    Same error (cannot find main class)

    I have attached the project. If you get the main window to load from a folder different from where it was created without complaining that it cannot find the main class, I will consider that success. Extra brownie points if you get it to run on a different computer from where the exe was built :)

    For now, I have to deliver something for internal use and after working two days to develop the software which works under B4J (not finished but usable for what I need to do now), I have spent 5 work days and a week end trying to get the exe to run on a second machine with nothing to show for it.

    Since the program runs fine under B4J, I am going to instruct the test engineer to just start the program from B4J. It's ugly but it won't be the first time and I can get him off my back :)
    Main advantage of B4J right there: I can install as many copies of B4J as I need. Thanks a lot again Erel for making this free!
    Then hopefully when I figure out where I went wrong, I will fix it.

    To summarize:

    I am working on 3 machines, a Win10 computer at home and two Win 7 at work. All 64 bits. All have jdk11 from Erel's link, B4J 7.31 and B4JPackager11 v1.02. The home machine and the main work machine can produce an exe with B4JPackager11 which runs on the computer where it was created as long as I do not move the folder. The second work machine does not run the exe (that was produced by B4JPackager11 on THAT machine) at all even though the program runs from within B4J, and B4JPackager11 does not produce any error code. The error is always Cannot find main class.

    I did try to run the jar file directly (on my main work machine) using this command (that would be acceptable in my environment):
    C:\Java\jdk-11.0.1\bin\java -jar .\result.jar
    and I got:
    Not sure what I need to do to install the JavaFX runtime components...

    I do not need an installer at this time, even though as I am planning to extend the use of B4J, I will need to be able to build a setup.exe at some point. Some of our test software ends up on customer's equipment for test and troubleshooting so a streamlined installation process is desirable.

    Thank you everybody for trying to help.

    Attached Files:

  10. Erel

    Erel Administrator Staff Member Licensed User

    You should create a zip file with the temp folder content and upload it to Google Drive or a similar service.
  11. Didier9

    Didier9 Active Member Licensed User

  12. OliverA

    OliverA Well-Known Member Licensed User

    The file that works for me is the run.exe file in the build directory. I'm using it on Windows 10 (Pro, 64bit, build 1809) and when using Windows Explorer to launch the executable, I do get a "Search for app in the Store? You need to install an app for this task. Would you like to search fo one in the Store?" message. I just answer no and your application starts. The run_debug.bat file also works (with the same message).

    BTW, when I run the run.exe and the run_debug.bat file from the command line, everything just works.

    Looks like I have something weird happening in Windows Explorer. After starting an application (I tried another program), when I go to File->Help->About Windows, it starts that program instead of bringing up the About information. This is in effect until I close out Windows Explorer and open it back up. Odd... and off topic (sorry)
  13. Didier9

    Didier9 Active Member Licensed User

    Yes, that is the file I am trying to run, and which runs on two of the 3 machines I have tried (one Win 10 and 2 Win 7).

    I am starting to believe it is some different configuration on that particular computer. My two work machines are supposed to be configured the same (Win 7 64 bit, OpenJDK 11.0.1 and normally what should be the same package of corporate security patches, Bit9 and other "utilities" of dubious utility) but I was looking at the environment variables on the two Win 7 machines and they have different sets of variables.

    The machine that does not run the exe did not have JAVA_HOME or JRE_HOME. I added these variables making sure they pointed to the right place but it did not help. Some of the corporate payload includes java programs so these machines also have the official Java JRE installed, actually several versions of it because as we all know, "Java write once runs everywhere" is a bunch of b**l, so each machine has 3 or 4 sets of Oracle java versions to support the various applications.

    Thanks for trying!
  14. Erel

    Erel Administrator Staff Member Licensed User

    You don't need any other version of Java installed. It uses the embedded Java runtime to run your app.
    If there is one specific computer that it doesn't work then you need to check why it doesn't work. This thread is too long for me to help. You should start a new thread with only the relevant information. Start with running run_debug.bat and post the output.
  15. Didier9

    Didier9 Active Member Licensed User

    I understand I do not need any other version installed. The question is could it cause a problem if I have other versions installed?

    Anyhow, I will start a new thread if needed when I have more information. For now, I am going to run from the B4J IDE on that machine and I am going to try to create a setup.exe executable with innosetup on the machines that run the exe.
    Thank you
  16. Erel

    Erel Administrator Staff Member Licensed User

    Most probably no.
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice