簡體   English   中英

當注解注入器顯示為空時,如何調試它們?

[英]How do you debug annotation injectors when they just appear null?

我目前正在使用CQ5 / AEM,並且我們有一個@Reference批注,其行為似乎與注入器批注類似。

我們的問題是POM文件中的配置錯誤,導致注入失敗。

我們必須蠻力逐個更改POM文件,以找出引起問題的原因。 蠻力顯然不是最好的方法。

在其他框架(例如spring)中,有注釋的注入器發生故障時有什么不同的方法來調試它們?

任何建議將不勝感激,因為我們發現這是一個足夠普遍的問題。

最好的祝福,

Bayani


           <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <version>2.3.7</version>
                <configuration>
                    <instructions>
                        <Embed-Dependency>*;scope=compile|runtime</Embed-Dependency>
                        <Embed-Directory>OSGI-INF/lib</Embed-Directory>
                        <Embed-Transitive>true</Embed-Transitive>
                    </instructions>
                </configuration>
           </plugin>

我們在刪除配置后對其進行了修復。

但是通過設置提供者的范圍來設置復制器依賴項也可以解決它。

          <dependency>
                 <groupId>com.day.cq</groupId>
                 <artifactId>cq-replication</artifactId>
                 <version>5.4.24</version>
                 <scope>provided</scope>
          </dependency>

我的核心問題仍然是,假設我們僅以@Reference為null開頭,那么在引用為null的情況下,您是否對如何解決此問題有任何建議?

@Reference不是特定於CQ的,它由Apache Felix maven-scr-plugin處理以生成OSGi聲明服務 (DS)的元數據。

您並不是說您的情況下“注入剛剛失敗”。

如果您的問題是在構建時發生的,則可能是由於maven-scr-plugin的配置錯誤,在這種情況下,DS元數據將無法正確生成。 該元數據是在target / scr-plugin-produced / OSGI-INF下生成的,您可以根據DS規范檢查其中的文件,以檢查它們是否正確。 在那里生成的XML元數據文件的語法相當簡單,並在DS規范中進行了說明。 還請注意mvn -X ,它在構建時輸出調試信息,這可能有助於解決此類問題。

另一方面,如果構建和DS元數據都可以,但是在構建時不滿足引用,則可以通過OSGi控制台(在Sling和CQ5中的/ system / console下)檢查是否存在所需的OSGi服務,以及如果不是,請檢查系統日志以了解可能的原因,或者在Java級別調試服務模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM