diffplug / goomph

IDE as build artifact
Apache License 2.0
130 stars 30 forks source link

Goomph starting OSGI application fails since goomph 3.16 #92

Closed frankbenoit closed 5 years ago

frankbenoit commented 5 years ago

This was working before. After upgrading Goomph to 3.16/17 I get this exception:

Gradle 4.10.3

Gradle 5.2

Can you please check? regards Frank

nedtwigg commented 5 years ago

Can you confirm that 3.18.0-SNAPSHOT fixes your problem? Available now in https://oss.sonatype.org/content/repositories/snapshots

Once it's confirmed good I'll release 3.17.2.

frankbenoit commented 5 years ago

Hi

i can confirm the 3.18.0-SNAPSHOT works with Gradle 4.10.3. With Gradle 5.1.1 it starts the OSGI app, but while running I get another error:

    at org.gradle.internal.impldep.com.sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.java:1156)
    at org.gradle.internal.impldep.com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:165)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:441)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)
    at castle.extdata.autosar.v4.converter.Autosar4Parser.autosarUnmarshal(Autosar4Parser.java:30)
    at castle.testenv.sysgen.ConfigProcessorGenAutosarV4.addAutosarFilesToConverter(ConfigProcessorGenAutosarV4.java:105)
    at castle.testenv.sysgen.ConfigProcessorGenAutosarV4.generateFlexray(ConfigProcessorGenAutosarV4.java:90)
    at castle.testenv.sysgen.ConfigProcessorGenAutosarV4.generateIncludeAutosarUnified(ConfigProcessorGenAutosarV4.java:78)
    at castle.testenv.sysgen.ConfigProcessorGenAutosarV4.generateIncludeAutosar(ConfigProcessorGenAutosarV4.java:52)
    at castle.testenv.sysgen.ConfigProcessor.createCom(ConfigProcessor.java:870)
    at castle.testenv.sysgen.ConfigProcessor.generateSingleCom(ConfigProcessor.java:850)
    at castle.testenv.sysgen.ConfigProcessor.generateCom(ConfigProcessor.java:807)
    at castle.testenv.sysgen.ConfigProcessor.process(ConfigProcessor.java:150)
    at castle.testenv.sysgen.SysGen.genProject(SysGen.java:415)
    at castle.testenv.sysgen.SysGen.runMain(SysGen.java:177)
    at castle.testenv.sysgen.SysGen.runMain(SysGen.java:369)
    at castle.testenv.sysgen.Application.applRun(Application.java:48)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: com.sun.istack.Pool
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 25 more

Could this be related to goomph starting it? Or is it clearly a Gradle problem?

nedtwigg commented 5 years ago

I bet it has something to do with a complicated POM in one of your deps, where whatever jar contains com.sun.istack.Pool is only included for "JRE8" or some other specific runtime environment. Probably gradle 4.x does a fat search that just includes everything, but gradle 5.x is being more granular and only including what is appropriate based on the runtime, but the flags that determine that runtime aren't being set correctly somewhere deep inside gradle.

My recommendation would be to find the missing jar (maybe https://mvnrepository.com/artifact/com.sun.istack/istack-commons-runtime?) and add it explicitly in the equinoxLaunch.

My guess above is based on:

Let me know if adding the missing jar is a viable workaround. If not we can keep digging before I publish 3.17.2.

frankbenoit commented 5 years ago

Hi Ned,

I tried it by doing this:

equinoxLaunch {
    headlessAppSetup {
        source.addProject(project(':......'))

        // *** I added this line ***
        source.addMaven('com.sun.istack:istack-commons-runtime:3.0.8')

        launchTask 'myApp', {
            it.args = ['-consoleLog', '-application', 'my.application']
            it.workingDir = file(myWorkdir)
        }
    }
}

But this did not change the error behavior.

Then i added it into the buildscript:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "com.sun.istack:istack-commons-runtime:3.0.8"
    }
}

This fixed it. Now it works with Gradle 5.1.1 and 5.2.

Thanks Ned!

Frank

nedtwigg commented 5 years ago

Published as 3.17.2.