我在嵌入式模式下使用Felix,使用File Install軟件包,並且有一個安裝但未解決(因此無法啓動/活動)的軟件包,而且我掙扎的時間比我想的要多根本原因在日誌中...如何看到爲什麼在Apache Felix Log中不滿足捆綁需求?
如何/你在哪裏得到那些有用的尋找「無法解決...因爲...」或「BundleException:束中未解決的約束...無法解決...缺少需求... osgi.wiring.package「日誌中的消息類型,是否自動從Felix框架和/或文件安裝捆綁包中?我沒有看到類似的東西 - 我應該嗎?哪裏?
我還添加了日誌記錄(通過Apache Felix Log和osgi-loglistener-slf4j),但仍然是虛擬現實 - 您需要做的比我在嵌入式Felix中爲這類問題啓用日誌記錄功能做得更多嗎?
我已經添加了Felix Gogo Shell CLI,並且發現它的inspect
命令也不是很有幫助(對未解析的捆綁包不起作用),並且只有start
會顯示根本原因 - 但我怎麼能得到這個記錄到日誌中,而不需要有一個控制檯,做一個啓動:
g! lb
START LEVEL 1
ID|State |Level|Name
0|Active | 0|System Bundle (5.6.1)|5.6.1
1|Active | 1|Apache Felix File Install (3.5.4)|3.5.4
2|Active | 1|Apache Felix Remote Shell (1.1.2)|1.1.2
3|Active | 1|Apache Felix Gogo Runtime (0.16.2)|0.16.2
4|Active | 1|Apache Felix Gogo Command (0.16.0)|0.16.0
5|Active | 1|Apache Felix Gogo Shell (0.12.0)|0.12.0
6|Installed | 1|osgi.testplugin (1.0.0.SNAPSHOT)|1.0.0.SNAPSHOT
g! inspect req * 6
Bundle 6 is not resolved.
g! start 6
org.osgi.framework.BundleException: Unable to resolve ch.vorburger.minecraft.osgi.testplugin [8](R 8.0): missing requirement [ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command) Unresolved requirements: [[ch.vorburger.minecraft.osgi.testplugin [8](R 8.0)] osgi.wiring.package; (osgi.wiring.package=org.spongepowered.api.command)]
我也明白,由於OSGi的異步包初始化,它可能不是很明顯,當登錄失敗的包開始,因爲它可能必須等待依賴捆綁才能出現?難道它仍然..在某種寬限期之後記錄這種錯誤?
右..所以是這裏的問題,然後真的不是Felix Framework核心,但是文件安裝捆綁軟件從bundle.start()中「吞併」了它的異常,或者當它注意到它所監視的目錄中的變化時呢?這是一個公平的錯誤報告,也許是一個LOG錯誤()或警告()的貢獻是合理的嗎?或者它可能是故意吞下的 - 當文件安裝應該忽略沒有記錄的包啓動錯誤(可能是因爲它會重試,所以'污染'日誌不會是可取的)時可以想象的情景嗎? – vorburger
絕對值得在felix上打開一個問題。也許fileinstall可以配置爲顯示錯誤,但也可能是一個錯誤。 –
好的,打開https://issues.apache.org/jira/browse/FELIX-5448 ... – vorburger