Uploaded image for project: 'Felix'
  1. Felix
  2. FELIX-1129

SCR plugin fails if class import is implicit

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Won't Fix
    • maven-scr-plugin-1.0.10
    • None
    • SCR Tooling
    • None

    Description

      The scr plugin gives a build error (see below) in a certain case when an import is implicit, ie. is not defined explicitly in the import section of the java source file, but is referenced in the source of the superclass. The interface in question is the one that this class implements and under which it should be registered as service.

      In my specific case there is:

      • an interface Importer, defined in bundle A
      • an implementation of that interface, HttpImporter, also defined in bundle A
      • bundle B now has a provided dep to bundle A
      • bundle B has a class ICalHttpImporter that extends HttpImporter
      • this class has scr qdox annotations and shall be registered as service under the Importer interface
      • it uses the short form @scr.service without explicitly specifying the interface class name

      Because of the import of HttpImporter (and the ICalHttpImporter extends HttpImporter), it is not necessary for the Java compiler to have an "import com.day.cq.polling.importer.Importer" in the file (Eclipse removes it automatically upon organize imports if present). But if it is missing, the scr plugin fails. From the error message, it seems it is looking for the interface in the current package (com.day.cq.collab.calendar.impl.importer.Importer), where it cannot find it.

      If the import statement "import com.day.cq.polling.importer.Importer;" is added, the scr plugin runs correctly and produces the right scrinfo files. Setting priority to minor because of this workaround.

      [INFO] [scr:scr

      {execution: generate-scr-scrdescriptor}

      ]
      [INFO] ------------------------------------------------------------------------
      [ERROR] BUILD ERROR
      [INFO] ------------------------------------------------------------------------
      [INFO] Unable to load class com.day.cq.collab.calendar.impl.importer.Importer
      [INFO] ------------------------------------------------------------------------
      [INFO] Trace
      org.apache.maven.lifecycle.LifecycleExecutionException: Unable to load
      class com.day.cq.collab.calendar.impl.importer.Importer
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:583)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
      at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
      at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
      at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
      at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
      at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
      at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
      Caused by: org.apache.maven.plugin.MojoExecutionException: Unable to
      load class com.day.cq.collab.calendar.impl.importer.Importer
      at org.apache.felix.scrplugin.tags.JavaClassDescriptorManager.getJavaClassDescription(JavaClassDescriptorManager.java:383)
      at org.apache.felix.scrplugin.tags.qdox.QDoxJavaClassDescription.getExternalFieldByName(QDoxJavaClassDescription.java:175)
      at org.apache.felix.scrplugin.PropertyHandler.getReferencedField(PropertyHandler.java:258)
      at org.apache.felix.scrplugin.PropertyHandler.getPropertyName(PropertyHandler.java:210)
      at org.apache.felix.scrplugin.PropertyHandler.testProperty(PropertyHandler.java:308)
      at org.apache.felix.scrplugin.SCRDescriptorMojo.createComponent(SCRDescriptorMojo.java:268)
      at org.apache.felix.scrplugin.SCRDescriptorMojo.execute(SCRDescriptorMojo.java:129)
      at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451)
      at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558)
      ... 16 more

      Attachments

        Activity

          People

            Unassigned Unassigned
            alexander.klimetschek Alexander Klimetschek
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: