resource : Java Glossary

*0-9ABCDEFGHIJKLMNOPQRSTUVWXYZ (all)

resource
A data file embedded inside the jar file.

If you call getResource, you must now sign the Applet, with a real or self-signed certificate.

If you don’t, you Applet will just quietly terminate without any sort of message to indicate the problem. This drives you nuts because when you run the Applet as an application or in the AppletViewer to debug, all works fine. Oddly getResourceAsStream does not appear to have this problem.

Use Cramfull
Recipe Old Netscape
Tips Links
Gotchas

Use

You can access the resource as a URL (Uniform Resource Locator) : or as an InputStream: where InWords.properties is the name of the file inside the jar you want to read.

Class.getResource is similar, giving you the URL of the resource instead of an InputStream to read it. Note that getResource is an instance method. Class.getResource makes these changes to the resource name: if the resource name starts with /, it is unchanged; otherwise, the package name is prepended to the resource name after converting . to /. This allows you to use either dots or slashes to separate the components of the name. So normally your resource member name includes the package name, but you don’t specify the package name to getResource. Alternatively, but not recommended, you can specify the fully qualified name of the resource by using a lead / on the name you feed to getResource. Never use \ in resource names. So you can access by either: /com/mindprod/entities/entitytable.ser or the short form entitytable.ser. The short form only works from classes in the com.mindprod.entities package.

Recipe

Here my recipe for accessing resources:
  1. Using jar.exe, pack the resource in the jar under the package name and resource name. For example, a resource for use by com.mindprod.entities. Entities would be stored in the jar under the name com/mindprod/entities/entitytable.ser. Note that the class name does not appear, just the package and resource name. See jar.exe for how. Use WinZip or similar ZIP utility to verify the package name and resource name are correct inside the jar, including case.
  2. // accessing a resource with getResource to give you its URL
    
    URL url = Entities.class.getResource( "entitytable.ser" );
    out.println( url );
    
    // Note that getResource is an instance method of Class,
    // so You CANNOT say:
    URL url = Class.getResource( "entitytable.ser" );
    Note the lack of dots, slashes, package name or class name in the resource.

Tips

Gotchas

Cramfull

The problem with resources is you must manually remember to include them. You might not find out they are missing from the jar until months later when someone goes to use an obscure resource. GenJar is incapable of detecting missing resources or automatically including them. Cramfull is a tool to convert resources into Java source code. The advantage of Cramfull is GenJar can detect resources coded as class files and make sure they are included.

Old Netscape

class.getResource does not work in some versions of Netscape. You must use class.getResourceAsStream. Further, for some Satanic reason, the folk at Netscape decided that resources must have one of a magic list of extensions. *.com, *.exe, *.dat are not among them. Happily *.jpg, *.gif and *.ser are. Images are a very common sort of resource.

This page is posted
on the web at:

http://mindprod.com/jgloss/resource.html

Optional Replicator mirror
of mindprod.com
on local hard disk J:

J:\mindprod\jgloss\resource.html
Canadian Mind Products
Please the feedback from other visitors, or your own feedback about the site.
Contact Roedy. Please feel free to link to this page without explicit permission.

IP:[65.110.21.43]
Your face IP:[44.220.245.254]
You are visitor number