users@jersey.java.net

Re: null pointer in resources scan

From: Nam Nguyen <Nam.Nguyen_at_Sun.COM>
Date: Tue, 29 Jan 2008 11:43:45 -0800

guilhem legal wrote:
> I execute your little piece of code and I obtain the following result :
>
> URI:
> file:/C:/Documents%20and%20Settings/legal/Mes%20documents/NetBeansProjects/geomatysWS/build/web/WEB-INF/classes/net/seagis/coverage/wms/
>
> file p: net/seagis/coverage/wms
> false
> URI:
> jar:file:/C:/Documents%20and%20Settings/legal/Mes%20documents/NetBeansProjects/geomatysWS/build/web/WEB-INF/lib/postgrid-1.0-SNAPSHOT.jar!/net/seagis/coverage/wms
>
> file p: net/seagis/coverage/wms
> false
>
> I suppose false is not a good answer but there are directory for sure.
>
> by the way i try some test, the WAR build by NetBeans is ggod and it
> work without the resource error. but its when i deploy with NB that
> the errors occur.
> for the RestFul plugin yes i have it but it is in 0.4 version so it
> doesn't match, maybe i should uninstall it.
You could get the NB plugin 0.5 version by doing Tools > Plugins and
click on the 'Available Plugins' tab. Click on Name colum header to
sort by name. You should see 'RESTful Web Services' plug in, double
check if it in fact version 0.5.

I tried your test scenario about behavior of editing web.xml. The 0.5
version does not overwrite web.xml when you restart IDE or reopen the
web project.
>
> Guilhem legal
>
> Paul Sandoz a écrit :
>> guilhem legal wrote:
>>> hi again, it was not about the JDK5/6, i don't have the previous
>>> error now ony the resource problem.
>>
>> OK.
>>
>>
>>> it seems netBeans don't like too much jersey 0.5. When i build whith
>>> maven i have no problem, nut with netbeans...
>>> when i create an web project with existing classes, netbeans
>>> automaticly comment all my jersey reference in web.xml
>>> and add a librairy by force call restful Webservice with only
>>> jsr311-api.jar (when i remove it and uncomment the jersey part in
>>> web.xml, all comme back when i restart the IDE)
>>>
>>
>> Do you have the RESTful Web services plugin installed?
>>
>>
>>> for the piece of code you write i don't know where put this, who
>>> call the method printPackageUrls(String... packages)
>>>
>>
>> Create a new servlet in your web app and call
>> printPackageUrls(String... packages) from this init or service method.
>>
>> Paul.
>>
>>> Guilhem Legal
>>>
>>>
>>> guilhem legal a écrit :
>>>> I still continue to think this is a problem of JDK5/6.
>>>> in fact just before this exception I get an other exception :
>>>>
>>>> GRAVE: "Servlet.service()" pour la servlet ServletAdaptor a généré
>>>> une exception
>>>> java.lang.ClassFormatError: Illegal class modifiers in class
>>>> net/seagis/wcs/package-info: 0x1600
>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>> at java.lang.ClassLoader.defineClass(Unknown Source)
>>>> at java.security.SecureClassLoader.defineClass(Unknown Source)
>>>> at
>>>> org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1817)
>>>>
>>>> at
>>>> org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
>>>>
>>>> at
>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
>>>>
>>>> at
>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
>>>>
>>>> at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>>>> at java.lang.Class.forName0(Native Method)
>>>> at java.lang.Class.forName(Unknown Source)
>>>> at java.lang.Package.getPackageInfo(Unknown Source)
>>>> at java.lang.Package.getAnnotation(Unknown Source)
>>>> at
>>>> com.sun.xml.bind.v2.model.annotation.RuntimeInlineAnnotationReader.getPackageAnnotation(RuntimeInlineAnnotationReader.java:125)
>>>>
>>>>
>>>> which i know is throw when you use a 1.6 compiled app in an
>>>> environement 1.5
>>>>
>>>> i continue to investigate where this come from
>>>> Guilhem Legal
>>>>
>>>> Paul Sandoz a écrit :
>>>>> Hi Guilhem,
>>>>>
>>>>> I don't think it is a JER 5/6 version issue. An exception is being
>>>>> thrown because a URL with a 'file' protocol (scheme) is assumed to
>>>>> be a directory and it is not in this case. Jersey converts this
>>>>> file-based URL to a file then does File.listFiles() which returns
>>>>> null. Definitely a bug.
>>>>>
>>>>> I managed to reproduce the same exception but i am not sure if
>>>>> that is the same problem you are having. What i did was create a
>>>>> file, say called 'junk', in a package, say 'mypackage', then set
>>>>> the package name to search for in the web.xml as follows:
>>>>>
>>>>> <init-param>
>>>>> <param-name>com.sun.ws.rest.config.property.packages</param-name>
>>>>> <param-value>mypackage.junk</param-value>
>>>>> </init-param>
>>>>>
>>>>>
>>>>> For the the package name you used:
>>>>>
>>>>> net.seagis.coverage.wms
>>>>>
>>>>> is 'wms' a file in the package "net.seagis.coverage" ?
>>>> net.seagis.coverage.wms is a package containing two resources classes.
>>>>>
>>>>> If not i am not sure what is going on. Would it be possible to
>>>>> execute the following code somewhere in your web app by including
>>>>> an additional a basic servlet:
>>>>>
>>>>> public static void printPackageUrls(String... packages) throws
>>>>> Exception {
>>>>> ClassLoader cl =
>>>>> Thread.currentThread().getContextClassLoader();
>>>>> for (String p : packages) {
>>>>> String fileP = p.replace('.', '/');
>>>>> Enumeration<URL> urls = cl.getResources(fileP);
>>>>> while (urls.hasMoreElements()) {
>>>>> System.out.println(" URI: " + urls.nextElement());
>>>>> System.out.println("file p: " + fileP);
>>>>> System.out.println(new File(fileP).isDirectory());
>>>>> }
>>>>> }
>>>>> }
>>>>>
>>>>> where you pass the packages you configure in the web.xml ?
>>>>>
>>>>> Thanks,
>>>>> Paul.
>>>>>
>>>>> guilhem legal wrote:
>>>>>> hi!
>>>>>>
>>>>>> I have a little issue with the maven plugin of netbeans, when i
>>>>>> build my project with maven command line all work fine.
>>>>>> But when i build my jersey WS with the netbeans maven plugin and
>>>>>> try to deploy it with NB i get the folowing error :
>>>>>>
>>>>>> javax.servlet.ServletException:
>>>>>> java.lang.reflect.InvocationTargetException
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.createResourceConfig(ServletContainer.java:172)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.init(ServletContainer.java:104)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
>>>>>>
>>>>>>
>>>>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>>>>>
>>>>>> java.lang.Thread.run(Thread.java:595)
>>>>>>
>>>>>> java.lang.reflect.InvocationTargetException
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>> Method)
>>>>>>
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>>>>
>>>>>>
>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>>>
>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.createResourceConfig(ServletContainer.java:168)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.init(ServletContainer.java:104)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
>>>>>>
>>>>>>
>>>>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>>>>>
>>>>>> java.lang.Thread.run(Thread.java:595)
>>>>>>
>>>>>> java.lang.NullPointerException
>>>>>>
>>>>>> com.sun.ws.rest.impl.container.config.ResourceClassScanner.indexDir(ResourceClassScanner.java:149)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.impl.container.config.ResourceClassScanner.index(ResourceClassScanner.java:135)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.impl.container.config.ResourceClassScanner.scan(ResourceClassScanner.java:97)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.api.core.PackagesResourceConfig.init(PackagesResourceConfig.java:88)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:64)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.api.core.PackagesResourceConfig.<init>(PackagesResourceConfig.java:72)
>>>>>>
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
>>>>>> Method)
>>>>>>
>>>>>> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
>>>>>>
>>>>>>
>>>>>> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
>>>>>>
>>>>>> java.lang.reflect.Constructor.newInstance(Constructor.java:494)
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.createResourceConfig(ServletContainer.java:168)
>>>>>>
>>>>>>
>>>>>> com.sun.ws.rest.spi.container.servlet.ServletContainer.init(ServletContainer.java:104)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>>>
>>>>>>
>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>>>>>>
>>>>>>
>>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
>>>>>>
>>>>>>
>>>>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>>>>>>
>>>>>> java.lang.Thread.run(Thread.java:595)
>>>>>>
>>>>>> I see in the log the scan starting :
>>>>>>
>>>>>> INFO: Scanning for root resource classes in the packages:
>>>>>> net.seagis.coverage.wms
>>>>>>
>>>>>> but it never find the resources.
>>>>>>
>>>>>> any idea what this happen? (i'm using tomcat 6 with JDK5, I have
>>>>>> maybe a problem with JDK6/5 compilation)
>>>>>>
>>>>>> Guilhem Legal
>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>>
>>>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>>>
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>>
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>