2017-08-10 42 views
3

我已經從Liferay的6.2門戶轉變爲Liferay的7捆當我部署它,它不能加載由於缺少資源,:Liferay 7中不可用的基礎資源?

$ blade sh diag 1084 
diag 1084 
org.mycompany.caasd.portal-ldap-sync [1084] 
    Unresolved requirement: Import-Package: com.liferay.portal.kernel.service; 
version="[1.20.0,2.0.0)" 

當我使用費利克斯·戈戈殼看看有什麼可用的,我沒有看到任何內核捆綁。這是我應該期待安裝的捆綁軟件,安裝自己,包含在我的捆綁軟件中,還是我沒有考慮正確的方式?

+0

這是一個很好的問題,我自己也想知道同樣的事情。 – Yoshiya

+0

沒有證實,正如我在https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/breaking-changes中看到的那樣,這些子包存在,那麼聲明導入就像'com.liferay .portal.kernel.service。*',你能檢查它是否是關於請求版本的問題嗎? –

回答

1

CE GA4的com.liferay.portal.kernel版本是2.32.1。所以,如果你是爲CEGA4發展,具有gradle這個項目,你會配置項目的build.gradle依賴這樣的:

dependencies { 
compileOnly group: "com.liferay.portal", name: "com.liferay.portal.kernel", version: "2.32.1" 
} 

您可以找到這通過查看portal-kernel.jar文件的MANIFEST/MANIFEST.MF或者如果你有Liferay的src爲您的版本,在任何自己的模塊build.gradle文件中。在我的tomcat包中,portal-kernel.jar如果在tomcat/lib/ext

除非我誤解了你的問題,否則應該得到你想要的。

請參閱該文檔here瞭解更多信息

0

當你建立你的包,BND要麼

  • 檢查你的classpath和檢測軟件包版本爲你
  • 使用任何版本的手動提供Import-Package

在您的情況下,它會以某種方式檢測到版本com.liferay.portal.kernel.service包裝爲1.20.0。因此,它產生的範圍「等於或大於當前版本,但低於下一個主要版本」,在你的情況下表示爲[1.20.0,2.0.0)。這可能是因爲你在claspath上有舊罐子,或者因爲你有錯誤的Import-Package聲明。

只要您不在使用在新版本中添加/更改的功能,這可能編譯得很好。但在運行時,實際的軟件包版本更高(類似2.32.1),因此不符合您的要求。由於OSGi運行時無法解決您的捆綁需求,捆綁包將保持「istalled」狀態!

要解決,你有兩種選擇:

  • 在舊的Liferay版本的安裝捆綁軟件(其中com.liferay.portal.kernel.service1.20.0之間2.0.0
  • 重新編譯你的包,確保classpath中只包含那些罐子其中com.liferay.portal.kernel.service軟件包的版本將生成運行時軟件包版本適用的版本範圍。