2009-11-30 3 views
1

J'ai créé presque le même plugin que JobTypeColumn. Il y a seulement une différence - elle montre la description du travail au lieu du type d'emploi. Mais après je ne peux pas ajouter cette colonne à ma liste. J'ai une exception NullPointerException après avoir modifié mon fichier config.xml manuellement.Problème de plugin Hudson

java.lang.NullPointerException 
    at hudson.model.Descriptor.newInstancesFromHeteroList(Descriptor.java:626) 
    at hudson.util.DescribableList.rebuildHetero(DescribableList.java:164) 
    at hudson.model.ListView.submit(ListView.java:262) 
    at hudson.model.View.doConfigSubmit(View.java:484) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:185) 
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:101) 
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:54) 
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:74) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:492) 
    at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:180) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:30) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:492) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:408) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:117) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:45) 
    at winstone.ServletConfiguration.execute(ServletConfiguration.java:249) 
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:335) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:378) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:94) 
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:304) 
    at org.jvnet.hudson.plugins.monitoring.HudsonMonitoringFilter.doFilter(HudsonMonitoringFilter.java:31) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:97) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:86) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:195) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:47) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:195) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:164) 
    at winstone.FilterConfiguration.execute(FilterConfiguration.java:195) 
    at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:368) 
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:333) 
    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244) 
    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150) 
    at java.lang.Thread.run(Unknown Source) 

Répondre

2

Avez-vous jeté un coup d'œil au Hudson source code? (Le fichier descripteur est here, mais vous devez d'abord consulter la page wiki pour lire le nom d'utilisateur/mot de passe). Bien sûr, je ne sais pas si vous utilisez la dernière version, mais en comparant la source avec la pile, il semble qu'il y ait un problème avec un objet JSON où hudson ne peut pas instancier l'un des descripteurs.

2

L'édition directe du fichier config.xml n'est pas une bonne approche. Tout d'abord comprendre comment obtenir l'interface utilisateur pour enregistrer la configuration correctement. Cela devrait également résoudre votre problème NPE, car votre plugin n'est probablement pas récupéré par Hudson correctement.

Questions connexes