Я пытаюсь разработать портлет в Liferay, который работает на рабочем процессе Bonita, но я продолжаю получать исключение в названии. Я не особенно знаком с Java-миром, поэтому я понятия не имею, чем ударить головой :)Liferay and bonita: noclassdeffounderror
ответ
Вы, наверное, назвать код, как:
new LiferayClass();
и виртуальная машина не имеет представления о том, где конструктор класса является. Это часто происходит, потому что вы были осторожны, чтобы сообщить компилятору (javac), где библиотека (файл Liferay JAR) была, когда вы компилировались, но вы не сказали JVM (java), где была библиотека, когда вы пытались запустить программу ,
Самый простой способ рассказать о JVM, где требуемые библиотеки можно найти, - это путь поиска, называемый CLASSPATH. Экспорт переменную среды, которая выглядит следующим образом:
для Unix/Linux
CLASSPATH=/path/to/liferay.jar:/path/to/bonita.jar
Для Windows
CLASSPATH=C:\path\to\liferay.jar;C:\path\to\bonita.jar
--- редактировать после осветления, что это веб-приложение ---
Поскольку это веб-приложение, вы не ставите JAR-файл в путь к классам. Вы размещаете его в каталоге WEB-INF/lib внутри созданного файла WAR. Таким образом, он будет доступен только вашему веб-приложению; в противном случае это может помешать другим развернутым веб-приложениям.
Трудно сказать точно что не так без дополнительной информации, но это почти обязательно будет проблемой класса. Найдите, какой класс указан в исключении, и убедитесь, что файл jar, содержащий этот класс, находится в пути к классам. Не знакомы с Liferay, я не знаю, как вы это сделаете, но это, вероятно, случай удаления файла jar в правый каталог.
Вы можете получить доступ к движку Bonita через API Rest из любого места.
Здесь документация Bonita REST API: http://www.bonitasoft.com/resources/documentation/bos-59/development/bonita-execution-engine/accessing-bonita-execution-engine
Вы можете создать Liferay портлета вызывая процессы, созданные с помощью API Bonita Rest, просто следуйте документации.
С уважением.
Это не ответ на заданный вопрос. Ожидается, что ответы на переполнение стека будут * напрямую * связаны с вопросом, который задают. –
На самом деле это ответ, я сделал это раньше, и это спасло меня много времени, не нужно слишком импортировать javas-зависимости bonita и бороться с API Bonita через ваши коды Java, просто используйте эти API REST, независимо от вашей платформы, Java, C# или даже PHP. –
Будет ли проблема с Liferay работать с Tomcat (например, Tomcat имеет отдельный CLASSPATH)? –
У Tomcat есть CLASSPATH, но вы не хотите использовать его в этом случае. Tomcat не кладет код веб-приложения на свой путь к классам, чтобы предотвратить развертывание веб-приложений от захвата надлежащего защитного кода и кода безопасности, который предоставляет Tomcat. –