[ https://issues.apache.org/jira/browse/GROOVY-11578?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17932298#comment-17932298 ]
Roy Teeuwen commented on GROOVY-11578: -------------------------------------- I have the same issue and wanted to create a bug and provide a fix: This happens because the bundle gets into RESOLVED state, after which the classes / packages are already available for other bundles to use, but spifly hasn't registered the service loader yet as an OSGi service. If in this short moment that the bundle is in RESOLVED but not yet STARTED, the util class is called, then it will not have the service loader. Could we at least already foresee that if there is no ServiceLoader found, it will give back the Default implementation instead of null? That would fix 99% of the cases probably :) (and was the fix I wanted to make) > Services loaded via the service loader not working in (some) OSGi contexts > for Groovy 4+ > ---------------------------------------------------------------------------------------- > > Key: GROOVY-11578 > URL: https://issues.apache.org/jira/browse/GROOVY-11578 > Project: Groovy > Issue Type: Bug > Affects Versions: 4.0.26 > Reporter: Paul King > Assignee: Paul King > Priority: Major > Attachments: groovy-json-example.zip > > > This is related to GROOVY-11570 and GROOVY-11571 but it seems worthwhile > having an issue that is just about getting the services working again. > Current steps to reproduce: > * clone the apache/karaf repo > * change groovy versions: codehaus=>apache, 3.0.24=>4.0.26 > * add an additional test to GroovyTest (see below) to exercise service loader > related functionality > * run "mvn test" in the itests directory > Additional test: > {code} > @Test > public void testExecGroovyJsonCommand() throws Exception { > String resultNoArgs = executeCommand("groovy:exec \"" > + "import org.apache.groovy.json.internal.FastStringUtils\n" > + "println FastStringUtils.toCharArray('result') == > 'result'.toCharArray()\""); > assertContains("true", resultNoArgs); > } > {code} > Result: > {noformat} > <system-err><![CDATA[groovy:exec "import > org.apache.groovy.json.internal.FastStringUtils > println FastStringUtils.toCharArray('result') == 'result'.toCharArray()" > java.lang.RuntimeException: Unable to load FastStringService > at > org.apache.karaf.itests.KarafTestSupport.executeCommand(KarafTestSupport.java:444) > at > org.apache.karaf.itests.KarafTestSupport.executeCommand(KarafTestSupport.java:358) > at > org.apache.karaf.itests.KarafTestSupport.executeCommand(KarafTestSupport.java:345) > at > org.apache.karaf.itests.GroovyTest.testExecGroovyJsonCommand(GroovyTest.java:54) > ... > at > org.ops4j.pax.exam.invoker.junit.internal.ContainerTestRunner.runChild(ContainerTestRunner.java:43) > ... > Caused by: java.lang.RuntimeException: Unable to load FastStringService > at > org.apache.groovy.json.internal.FastStringUtils.getService(FastStringUtils.java:56) > ... > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)