resource : Java Glossary
home R words local find no local find frame, full screen Google search web for topic jump to footer translate with Babelfish 2006-03-30 by Roedy Green ©1996-2008 Canadian Mind Products
Go to : punctuation 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (all)
resource
A data file embedded inside the jar file.
Use Old Netscape
Recipe Links
Cramfull

Use

You access the resource with code like this:
// using getResource
URL url = this.getClass().getResource( "picture.gif" );
// or
URL url = MyClass.class.getResource( "stuff.ser" );
// or
URL url = MyApp.class.getClassLoader().getResource( "InWords.properties" );
or this
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. In your class, access the resource with:
    // accessing a resource with getResource to give you its URL
    
    URL url = Entities.class.getResource( "entitytable.ser" );
    System.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. Dump the URL out so you can double check where it found it.

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.

CMP_homejump to top
CMP logo
feedback Please email your feedback for publication, errors, omissions, broken/redirected link reports
and suggestions to improve this page to Roedy Green : feedback email
made with CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[65.110.21.43]
Your face IP:[38.103.63.16] The information on this page is for non-military use only.
You are visitor number 10,812. Military use includes use by defence contractors.
You can get a fresh copy of this page from: or possibly from your local J: drive (Java virtual drive/Mindprod website mirror)
http://mindprod.com/jgloss/resource.html J:\mindprod\jgloss\resource.html