Hi,

thanks for the hint.

But I just change the code of the windows installer launcher of netbeans so that it is working for Java 10. This was quite a pain, due the fact, that I do not really understand how the build process during the IDE compilation is working. Some ZIP files are used which override all changes of native executables with netbeans 8.2 executables.

I changed line 125 - 181 of https://github.com/apache/incubator-netbeans/blob/master/nbi/engine/native/launcher/windows/src/JavaUtils.c to the following and copied the compiled nbi-engine.jar to netbeans/harness/modules/ext/ manually.

----

JavaVersion * getJavaVersionFromString(char * string, DWORD * result) {
    JavaVersion *vers = NULL;
    if(getLengthA(string)>=3) {
        char *p = string;

        // get major
        long major = 0;
        while(p!=NULL) {
            char c = p[0];
            if(c>='0' && c<='9') {
                major = (major) * 10 + c - '0';
                p++;
                continue;
            }
            else if(c=='.'){
                p++;
            }
            else{
                return vers;
            }
            break;
        }

        // get minor
        long minor = 0;
        while(p!=NULL) {
            char c = p[0];
            if(c>='0' && c<='9') {
                minor = (minor) * 10 + c - '0';
                p++;
                continue;
            }
            break;
        }

        *result = ERROR_OK;
        vers = (JavaVersion*) LocalAlloc(LPTR, sizeof(JavaVersion));
        vers->major  = major;
        vers->minor  = minor;
        vers->micro  = 0;
        vers->update = 0;
        ZERO(vers->build, 128);

        if(p!=NULL) {
            if(p[0]=='.') { // micro...
                p++;
                while(p!=NULL) {
                    char c = p[0];
                    if(c>='0' && c<='9') {
                        vers->micro = (vers->micro) * 10 + c - '0';
                        p++;
                        continue;
                    }
                    else if(c=='_') {//update
                        p++;
                        while(p!=NULL) {
                            c = p[0];
                            p++;
                            if(c>='0' && c<='9') {
                                vers->update = (vers->update) * 10 + c - '0';
                                continue;
                            } else {
                                break;
                            }
                        }
                    } else {
                        if(p!=NULL) p++;
                    }
                    if(c=='-' && p!=NULL) { // build number
                        lstrcpyn(vers->build, p, min(127, getLengthA(p)+1));
                    }
                    break;
                }
            }
        }
    }
    return vers;
}

----


--
Regards,
Andreas Hauffe





Am 20.08.2018 um 12:23 schrieb Neil C Smith:
You might want to check out the thread around using InnoSetup for this from around Aug 1st too.

Best wishes,

Neil

On Mon, 20 Aug 2018, 08:55 Andreas Hauffe, <andreas.hau...@tu-dresden.de <mailto:andreas.hau...@tu-dresden.de>> wrote:

    Hi,

    I tried with Netbeans 9 and JDK8/JRE8 and this is working.

    The verbose output of running the windows installer with a bundled
    JRE10 is the following:

    2018-08-20 09:48:12.421]> Create new process:
    [2018-08-20 09:48:12.421]>           command :
    C:\Users\${USER}\AppData\Local\Temp\\NBI25406.tmp\_jvm\bin\java.exe
    -classpath C:\Users\${USER}\AppData\Local\Temp\\NBI25406.tmp TestJDK
    [2018-08-20 09:48:12.421]>         directory : C:\Temp
    [2018-08-20 09:48:12.437]> ... process created
    [2018-08-20 09:48:12.682]> ... process finished his work
    [2018-08-20 09:48:12.682]>            output :
    10.0.2
    10.0.2+13
    Oracle Corporation
    Windows 10
    amd64

    [2018-08-20 09:48:12.682]>     java.version =  10.0.2
    [2018-08-20 09:48:12.698]>     java.vm.version = 10.0.2+13
    [2018-08-20 09:48:12.698]>     java.vendor = Oracle Corporation
    [2018-08-20 09:48:12.714]> os.name <http://os.name> = Windows 10
    [2018-08-20 09:48:12.714]>     os.arch = amd64
    [2018-08-20 09:48:12.714]>
    [2018-08-20 09:48:12.729]> ... getting java version from string :
    10.0.2+13
    [2018-08-20 09:48:12.729]> ... some java there
    [2018-08-20 09:48:12.729]> ... no java at
    C:\Users\${USER}\AppData\Local\Temp\\NBI25406.tmp\_jvm
    [2018-08-20 09:48:12.745]> ... check private jre at
    C:\Users\${USER}\AppData\Local\Temp\\NBI25406.tmp\_jvm\jre
    [2018-08-20 09:48:12.745]> ... not a java hierarchy
    [2018-08-20 09:48:12.760]> ... no java was found


-- Regards,
    Andreas Hauffe



    Am 20.08.2018 um 08:13 schrieb Geertjan Wielenga:
    First try to bundle JRE 8. If that works, then try to bundle JRE
    10. Doing it like this makes it easier to narrow down the problem.

    Gj

    On Mon, Aug 20, 2018 at 8:10 AM, Andreas Hauffe
    <andreas.hau...@tu-dresden.de
    <mailto:andreas.hau...@tu-dresden.de>> wrote:

        Hi,

        I'm trying to bundle a JRE 10.0.2 to a netbeans platform
        application. I'm using the following article
        https://dzone.com/articles/including-jre-in-nbi and change
        the part of creating the zip file of the jre by something
        like the following lines

        jlink --strip-debug --no-header-files --no-man-pages --output
        jre_lin_x64 --module-path ${JRE_PATH}/jmods --add-modules
        
java.scripting,java.desktop,java.instrument,java.logging,java.naming,jdk.localedata,jdk.management,jdk.pack,jdk.jdwp.agent
        --include-locales=en,de
        zip -9 -r -y ../jre_win_x64.zip .

        (The commands vary from linux to windows.)

        But when running the installer I'm getting an error that
        there is no jre. And in the logs show:

        [2018-08-17 17:21:25.887]> Create new process:
        [2018-08-17 17:21:25.887]>           command :
        C:\Users\${USER}\AppData\Local\Temp\\NBI60854.tmp\_jvm\bin\java.exe
        -classpath
        C:\Users\ADMINI~1.ILR\AppData\Local\Temp\\NBI60854.tmp TestJDK
        [2018-08-17 17:21:25.887]>         directory : C:\Temp
        [2018-08-17 17:21:26.180]> ... no java at
        C:\Users\${USER}\AppData\Local\Temp\\NBI60854.tmp\_jvm
        [2018-08-17 17:21:26.180]> ... check private jre at
        C:\Users\${USER}\AppData\Local\Temp\\NBI60854.tmp\_jvm\jre
        [2018-08-17 17:30:37.086]> No compatible jvm was found on the
        system

        But when looking into the path, there is a JRE and a java.exe
        and the command is running correctly.

        Did someone have this working already?

        Is there a problem with the version number of Java 10? I'm
        not used to C, but when looking into the
        getJavaVersionFromString from
        
https://github.com/apache/incubator-netbeans/blob/master/nbi/engine/native/launcher/windows/src/JavaUtils.c
        it can be a problem. This is the installer source code, right?

-- Regards,
        Andreas Hauffe



Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to