[英]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.