Forums

Home » Liferay Portal » English » 3. Development

Combination View Flat View Tree View
Threads [ Previous | Next ]
Cameron McBride
How to use Spring in a portlet without including the jars?
July 31, 2012 1:48 PM
Answer

Cameron McBride

Rank: Expert

Posts: 273

Join Date: February 8, 2011

Recent Posts

Simple enough right? I have a Spring MVC portlet and if I deploy the various spring jars with it then it works perfectly. Instead I would like to use the Spring 3.0.6 that comes with Liferay, in <tomcat>\webapps\ROOT\WEB-INF\lib\spring*.jar.

What I did was first not include the jars in my war (ha ha) and second I added this into my portlet-plugin-package.properties:
portal-dependency-jars=\
commons-logging.jar,\
jstl-api.jar,\
jstl-impl.jar,\
slf4j-api.jar,\
spring-context.jar,\
spring-aop.jar,\
spring-asm.jar,\
spring-beans.jar,\
spring-context-support.jar,\
spring-core.jar,\
spring-expression.jar,\
spring-web.jar

I'm not sure that it's really needed, I think those are just for compile time dependencies and I'm using gradle to build. When I deploy it fails immediatly with this:
120:36:02,520 ERROR [PortletBagFactory:123] java.lang.NoClassDefFoundError: org/springframework/context/ApplicationListener
2java.lang.NoClassDefFoundError: org/springframework/context/ApplicationListener


Any ideas how to take advantage of the Spring that Liferay already has loaded so I don't have to deploy portlets with duplicate jars?
Jelmer Kuperus
RE: How to use Spring in a portlet without including the jars?
July 31, 2012 2:23 PM
Answer

Jelmer Kuperus

Rank: Liferay Legend

Posts: 1192

Join Date: March 10, 2010

Recent Posts

The class you are missing is in spring-context.jar so you should have it.

can you verify that this class was copied to the webapps/your-portlet/WEB-INF/lib folder after your portlet was deployed?
David H Nebinger
RE: How to use Spring in a portlet without including the jars?
July 31, 2012 2:34 PM
Answer

David H Nebinger

Rank: Liferay Legend

Posts: 7151

Join Date: September 1, 2006

Recent Posts

Also make sure you're doing a clean build and deploy. Hot deploy may not be deleting some of the jars hanging around.