2011-03-03 4 views
0

Je tente d'exécuter un script groovy au démarrage pour une application Web. Je suis d'abord en train de suivre un exemple tiré du livre Spring Recipes.Groove Spring Bean Classpath

J'ai un SimpleInterestCalculator dans le paquet suivant - com.apress.springrecipes.interest

Le paquet de haricots est src/test/resources dans un paquet com.wer.com, et c'est où le haricot est.

Mon entrée dans c'est

<lang:groovy id="interestCalculator" script-source="classpath:com/apress/springrecipes/interest/SimpleInterestCalculator.groovy"> 
    <lang:property name="rateCalculator" value="rateCalculator" /> 
</lang:groovy> 

Je reçois l'erreur suivante.

Caused by: org.springframework.beans.factory.BeanCreationException: 
    Error creating bean with name 'simpleInterestCalculator': 
    Could not determine scripted object type for GroovyScriptFactory: 
    script source locator [classpath:src/com/apress/springrecipes/interest/SimpleInterestCalculator.groovy]; 
    nested exception is java.io.FileNotFoundException: 
    class path resource [src/com/apress/springrecipes/interest/SimpleInterestCalculator.groovy] cannot be opened because it does not exist 
+1

Je vous ai déjà expliqué comment exécuter un script Groovy au démarrage d'une application Spring. Vous devriez accepter ou commenter cette réponse avant de poser une nouvelle question similaire. –

Répondre

3

L'erreur que vous obtenez est une exception FileNotFoundException. Cela signifie qu'il ne trouve pas le fichier de script lui-même. Si le fichier est présent, il se peut qu'il ne soit pas sur le chemin de classe lors de l'exécution.

Vérifiez votre répertoire bin/out dans votre IDE pour voir si le fichier .groovy est présent. Parfois, si vous avez un .groovy dans un répertoire source, votre IDE suppose qu'il s'agit d'un code 'source' et le compile jusqu'au bytecode. Le résultat est que vous finiriez avec un fichier .class sur le classpath au lieu du script groovy lui-même. Cela varie en fonction des paramètres et de l'IDE que vous utilisez. Si cela semble être le problème, il peut y avoir une option pour cela ou vous pouvez utiliser une autre extension qui ne sera pas récupérée par le compilateur.