2010-05-12 6 views
0

J'essaye de développer un portlet dans Liferay qui fonctionne sur un workflow de Bonita, mais je continue à obtenir l'exception dans le titre. Je ne suis pas particulièrement familier avec le monde Java, donc je n'ai aucune idée de ce que je me bats la tête :)Liferay et bonita: noclassdeffounderror

Répondre

2

Vous avez probablement appelé un code comme:

new LiferayClass(); 

et la machine virtuelle Java n'a aucune idée où le constructeur de la classe est. Cela arrive souvent parce que vous étiez prudent de dire au compilateur (javac) où se trouvait la bibliothèque (fichier JAR Liferay) lorsque vous compiliez, mais vous n'avez pas dit à la JVM (java) où se trouvait la bibliothèque lorsque vous avez exécuté le programme .

La manière la plus simple de dire à la JVM où se trouvent les bibliothèques requises est d'utiliser un chemin de recherche appelé CLASSPATH. Exporter une variable d'environnement qui ressemble à ceci:

Pour Unix/Linux

CLASSPATH=/path/to/liferay.jar:/path/to/bonita.jar 

Pour Windows

CLASSPATH=C:\path\to\liferay.jar;C:\path\to\bonita.jar 

--- modifier après que c'est la clarification d'une application web ---

Comme il s'agit d'une application Web, vous ne placez pas le fichier JAR dans le chemin de classe. Vous le placez dans le répertoire WEB-INF/lib interne au fichier WAR que vous créez. De cette façon, il sera uniquement exposé à votre application Web. Dans le cas contraire, cela pourrait interférer avec les autres applications Web déployées.

+0

Est-ce que le fait que Liferay fonctionne avec Tomcat soit un problème (comme Tomcat a-t-il un CLASSPATH séparé)? –

+0

Tomcat possède un CLASSPATH, mais vous ne voulez pas l'utiliser dans ce cas. Tomcat ne place pas de code d'application Web sur son chemin de classe pour empêcher les applications Web déployées de détourner le code de confinement et de sécurité approprié fourni par Tomcat. –

0

Il est difficile de dire exactement exactement ce qui ne va pas sans plus d'informations, mais c'est presque lié à un problème de classpath. Recherchez la classe mentionnée dans l'exception et assurez-vous que le fichier jar contenant cette classe se trouve sur le chemin de classe. Sans être familier avec Liferay, je ne sais pas comment vous allez faire ça, mais c'est probablement un cas de déposer le fichier jar dans le bon répertoire.

1

Vous pouvez accéder au moteur Bonita via API Rest à partir de n'importe où.

Voici la documentation de l'API Bonita REST: http://www.bonitasoft.com/resources/documentation/bos-59/development/bonita-execution-engine/accessing-bonita-execution-engine

Vous pouvez créer un processus d'appel de portlets Liferay créés avec Bonita via l'API Rest, il suffit de suivre la documentation.

Cordialement.

+0

Ceci n'est pas réellement une réponse à la question posée. Les réponses sur Stack Overflow devraient être directement liées à la question posée. –

+0

en fait c'est la réponse, je l'ai fait avant et cela m'a fait gagner beaucoup de temps, pas besoin d'importer des dépendances bonita jar et de lutter contre les API Bonita grâce à vos codes java, utilisez ces API REST quelle que soit votre plateforme Java, C# ou même PHP. –