无法在项目上执行目标(generate-scr-scrdescriptor)无法加载已编译的类

时间:2017-03-12 00:23:03

标签: osgi maven-3 aem apache-felix felix-dependency-manager

任何人都面临以下错误。为什么会这样。我正在使用以下版本的插件。

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>3.2</version>
    </plugin>

<plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-scr-plugin</artifactId>
                <version>1.20.0</version>
                <executions>
                    <execution>
                        <id>generate-scr-scrdescriptor</id>
                        <goals>
                            <goal>scr</goal>
                        </goals>
                        <configuration>
                            <!-- Private service properties for all services. -->
                            <properties>
                                <service.vendor>Adobe</service.vendor>
                            </properties>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                           <outputDirectory>${project.build.directory}/classes</outputDirectory>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>
                        <version>1.5.11</version>
                    </dependency>
                </dependencies>
            </plugin>
  

[错误]无法执行目标   org.apache.felix:Maven的SCR-插件:1.20.0:SCR   项目osgiexample.core上的(generate-scr-scrdescriptor):   E:\ MY-工作\ TESTProj \ osgiexample \核心的\ src \主\ java的\ osgiexample \核心\ servlet的\ MyDataProviderServlet.java   :无法加载编译的类:   osgiexample.core.servlets.MyDataProviderServlet - &gt; [帮助1]

1 个答案:

答案 0 :(得分:1)

这意味着SCR插件无法找到与文件MyDataProviderServlet.java对应的已编译类文件

我在以下情况下才发现这种情况:

  1. 我的项目路径中有特殊字符,导致SCR插件无法找到已编译的类。
  2. 我有一个*.java文件,但其内容暂时被注释掉了。 SCR插件期望找到一个编译的*.class文件,但没有任何东西可以编译(只是注释)。这会导致出现与您所看到的错误信息完全相同的错误消息。
  3. 在我的脑海中,我无法想到其他情况,如果没有编译器插件首先失败,SCR插件将无法找到类文件。

    我在Java类中寻找一些不寻常的东西。这种情况会发生在其他具有SCR注释的类中吗?还是只有这个?

    下一步,我要查看文件系统。可能是一个奇怪的角色或文件链接混淆插件。

    最后,我要检查Maven构建的其余部分。也许你在SCR插件的执行之前使用了可能删除或破坏类文件的其他插件?