Reputation: 1523
I have a jar file which has the beans defined in applicationContext.xml. I have added the jar file to the lib directory and also modified my build config to
runtime "content:content-examiner-data:1.0"
I have defined the beans in the resource.groovy as follows
beans = {
importBeans("classpath*:/applicationContext.xml")
}
The bean definitions are as follows
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.1.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">
<mongo:mongo host="localhost" port="27017" />
<bean class="org.springframework.data.mongodb.core.MongoTemplate"
id="mongoTemplate">
<constructor-arg ref="mongo"></constructor-arg>
<constructor-arg value="documents"></constructor-arg>
</bean>
<mongo:db-factory id="mongoDbFactory" dbname="database" mongo-ref="mongo"/>
<mongo:mapping-converter id="converter" />
<bean id="gridTemplate" class="org.springframework.data.mongodb.gridfs.GridFsTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="converter" />
</bean>
<bean id="ceMongoStore" class="gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl">
<constructor-arg ref="mongoTemplate" />
<constructor-arg ref="gridTemplate" />
<constructor-arg value="cedocs" />
</bean>
</beans>
I get an error as follows when running the app with run-app option
Error 2013-02-07 16:08:24,806 [localhost-startStop-1] ERROR context.GrailsContextLoader - Error executing bootstraps: Cannot find class [gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl] for bean with name 'ceMongoStore' defined in URL [jar:file:/C:/development/projects/sentrytrunk/Latest/fc/content-examiner-web/lib/content-examiner-data-1.0.jar!/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl
Message: Cannot find class [gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl] for bean with name 'ceMongoStore' defined in URL [jar:file:/C:/development/projects/sentrytrunk/Latest/fc/content-examiner-web/lib/content-examiner-data-1.0.jar!/applicationContext.xml]; nested exception is java.lang.ClassNotFoundException: gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl
Line | Method
->> 303 | innerRun in java.util.concurrent.FutureTask$Sync
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 138 | run in java.util.concurrent.FutureTask
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run in ''
^ 662 | run . . in java.lang.Thread
Caused by ClassNotFoundException: gov.ic.isso.ce.service.mongoimpl.CEStorageMongoImpl
->> 202 | run in java.net.URLClassLoader$1
when I do a dump of the jar file using jar tvf I get the following output
1472 Thu Feb 07 16:00:30 EST 2013 applicationContext.xml
709 Thu Feb 07 16:00:30 EST 2013 gov/ic/isso/ce/data/CEStorage.class
1946 Thu Feb 07 16:00:30 EST 2013 gov/ic/isso/ce/data/model/document/Document.class
1186 Thu Feb 07 16:00:30 EST 2013 gov/ic/isso/ce/data/model/document/DocumentStatus.class
5995 Thu Feb 07 16:00:30 EST 2013 gov/ic/isso/ce/service/mongoimpl/CEStorageMongoImpl.class
0 Thu Feb 07 16:00:34 EST 2013 META-INF/maven/
0 Thu Feb 07 16:00:34 EST 2013 META-INF/maven/gov.ic.isso.content-examiner/
0 Thu Feb 07 16:00:34 EST 2013 META-INF/maven/gov.ic.isso.content-examiner/content-examiner-data/
1925 Thu Feb 07 15:54:44 EST 2013 META-INF/maven/gov.ic.isso.content-examiner/content-examiner-data/pom.xml
146 Thu Feb 07 16:00:34 EST 2013 META-INF/maven/gov.ic.isso.content-examiner/content-examiner-data/pom.properties
Upvotes: 0
Views: 434
Reputation: 75681
Remove runtime "content:content-examiner-data:1.0"
or the jar file - you only need one. If you add jar files to the lib directory, you need to run grails compile --refresh-dependencies
to get it added to the classpath
Upvotes: 2