2017-08-10 1 views
3

que je suis en train de passer un portlet de Liferay 6.2 à un faisceau pour Liferay 7. Quand je le déployer, il ne peut pas charger, à cause d'une ressource manquante:Ressources de base non disponibles dans 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)" 

Lorsque j'utilise shell Felix Gogo à voir ce qui est disponible, je ne vois pas de bundles de noyau. Est-ce un paquet que je devrais m'attendre à être installé, installer moi-même, inclure dans mon paquet, ou est-ce que je ne pense juste pas à ceci de la bonne manière?

+0

C'est une excellente question, je me demandais la même chose moi-même. – Yoshiya

+0

havent a confirmé que, comme je le vois dans https://dev.liferay.com/develop/reference/-/knowledge_base/7-0/breaking-changes, les sous-paquetages existent, qu'en est-il de déclarer l'importation comme ça 'com.liferay .portal.kernel.service. * ', pourriez-vous vérifier s'il s'agit d'un problème concernant la version demandée? –

Répondre

1

La version com.liferay.portal.kernel pour CE GA4 est 2.32.1. Donc, si vous développiez pour CEGA4, avec un projet gradle, vous souhaitez configurer la dépendance dans votre projet de build.gradle comme ceci:

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

Vous pouvez trouver en regardant dans MANIFEST/MANIFEST.MF de fichier portal-kernel.jar ou si vous avez Liferay src pour votre version, dans l'un de ses propres modules build.gradle fichiers. Dans mon paquet tomcat, le portal-kernel.jar si dans tomcat/lib/ext. À moins d'avoir mal compris votre question, cela devrait vous permettre d'obtenir ce que vous voulez.

Voir les docs here pour plus d'informations

0

Lorsque vous construisez votre paquet, BND sera soit

  • inspectez votre classpath et de détecter les versions de paquet pour vous
  • utiliser tous les versions que vous fournissez manuellement Import-Package

Dans votre cas, il semble qu'il a détecté la version de com.liferay.portal.kernel.service le paquet est 1.20.0. Il a donc généré la plage "égale ou supérieure à la version actuelle mais inférieure à la version majeure suivante" qui dans votre cas est exprimée en [1.20.0,2.0.0). C'est peut-être parce que vous aviez vieux pot sur claspath ou parce que vous aviez tort déclaration Import-Package.

Cela peut compiler très bien aussi longtemps que vous êtes ou en utilisant la fonctionnalité qui a été ajoutée/modifiée dans la nouvelle version. À l'exécution cependant, la version réelle du paquet est plus élevée (quelque chose comme 2.32.1) et par conséquent, elle ne répond pas à vos besoins. Comme OSGi runtime ne peut pas résoudre votre besoin en bundle, le bundle reste dans l'état "istalled"!

Pour résoudre que vous avez deux options:

  • installons votre paquet sur la version Liferay ancienne (où paquet com.liferay.portal.kernel.service est entre 1.20.0 et 2.0.0)
  • recompiler votre paquet assurant que le classpath ne contient que les pots en quel package com.liferay.portal.kernel.service a une version qui va générer une gamme de versions dans laquelle la version du package d'exécution s'adapte.