2010-12-08 43 views
2

J'ai un bogue bizarre sur le serveur live. Cela n'arrive que sur une action spécifique (une recherche). Je ne peux pas le reproduire localement (où je cours le code en utilisant grails run-app), et je ne peux pas le reproduire sur le serveur de test, qui exécute Tomcat exactement de la même manière que le serveur de production. J'ai copié la base de données de production à local, et je ne peux toujours pas reproduire l'erreur. Les seules différences de config sont que le courrier est activé et d'autres choses mineures, dont aucune ne semble pertinente ici. Je n'ai aucune idée de l'endroit où chercher, parce que je n'ai aucune idée de ce que signifie "l'objet n'est pas une instance de classe déclarante". Ou plus important encore, pourquoi cela ne serait qu'un problème sur le serveur de production. Voici l'erreur complète:Erreur de Grails uniquement sur le serveur Tomcat; non reproductible localement: Erreur lors de l'exécution de la balise <g:link>: l'objet n'est pas une instance de la classe déclarante

Error 500: Error processing GroovyPageView: Error executing tag <g:link>: object is not an instance of declaring class at /WEB-INF/grails-app/views/dealer/list.gsp:41 
Servlet: grails 
URI: /grails/dealer/list.dispatch 
Exception Message: object is not an instance of declaring class 
Caused by: Error processing GroovyPageView: Error executing tag <g:link>: object is not an instance of declaring class at /WEB-INF/grails-app/views/dealer/list.gsp:41 
Class: gsp_quotations_dealerlist_gsp 
At Line: [72] 

Le code .gsp autour de la ligne 41 est:

<g:each in="${dealerInstanceList}" status="i" var="dealerInstance"> 
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}"> 
    <td><g:link action="show" id="${dealerInstance.id}">${fieldValue(bean:dealerInstance, field:'name')}</g:link></td> 
    <td><g:link action="show" id="${dealerInstance.id}">${fieldValue(bean:dealerInstance, field:'address')}</g:link></td> 
    <td><g:link controller="quoteSettings" action="adminEdit" id="${dealerInstance.id}">${dealerInstance?.quoteSettings?.pricingTables?.size() > 0}</g:link></td> 
</tr> 
</g:each> 

Ligne 41 est la dernière g: balise de lien. Notez à nouveau que tout cela fonctionne correctement localement et sur le serveur de test. Je suis complètement perplexe.

Répondre

0

L'erreur « objet n'est pas une instance de déclarer classe » est généralement associée à des problèmes d'environnement. Vérifiez vos versions JVM et tomcat sur le serveur. Essayez d'utiliser la même version JVM pour la production et le développement.