Top 10 in 2008
5 popular archives:
All selections are based on page views.
Best of 2008: A developer's list
JW blogger Dustin Marx names his top 10 technology events of 2008. Highlights include updates to Java SE 6, runtime support in OpenLaszlo 4.2, and the clash of the titans that occurred early in the year, when Sun acquired MySQL on the same day that Oracle announced its acquisition of BEA. No two lists are alike and it's not too late: What were your top 10 for 2008?
Also see:
August 8, 2003
What is the best strategy for loading property and configuration files in Java?
When you think about how to load an external resource in Java, several options immediately come to mind: files, classpath
resources, and URLs. Although all of them eventually get the job done, experience shows that classpath resources and URLs
are by far the most flexible and user-friendly options.
In general, a configuration file can have an arbitrarily complex structure (e.g., an XML schema definition file). But for
simplicity, I assume below that we're dealing with a flat list of name-value pairs (the familiar .properties format). There's no reason, however, why you can't apply the ideas shown below in other situations, as long as the resource
in question is constructed from an InputStream.
Using good old files (via FileInputStream, FileReader, and RandomAccessFile) is simple enough and certainly the obvious route to consider for anyone without a Java background. But it is the worst option
in terms of ease of Java application deployment. Using absolute filenames in your code is not the way to write portable and
disk position-independent code. Using relative filenames seems like a better alternative, but remember that they are resolved
relative to the JVM's current directory. This directory setting depends on the details of the JVM's launch process, which
can be obfuscated by startup shell scripts, etc. Determining the setting places an unfair amount of configuration burden on
the eventual user (and in some cases, an unjustified amount of trust in the user's abilities). And in other contexts (such
an Enterprise JavaBeans (EJB)/Web application server), neither you nor the user has much control over the JVM's current directory
in the first place.
An ideal Java module is something you add to the classpath, and it's ready to go. Think EJB jars, Web applications packaged
in .war files, and other similarly convenient deployment strategies. java.io.File is the least platform-independent area of Java. Unless you absolutely must use them, just say no to files.
Having dispensed with the above diatribe, let's talk about a better option: loading resources through classloaders. This is much better because classloaders essentially act as a layer of abstraction between a resource name and its actual location on disk (or elsewhere).
Let's say you need to load a classpath resource that corresponds to a some/pkg/resource.properties file. I use classpath resource to mean something that's packaged in one of the application jars or added to the classpath before the application launches.
You can add to the classpath via the -classpath JVM option each time the application starts or by placing the file in the <jre home>\classes directory once and for all. The key point is that deploying a classpath resource is similar to deploying a compiled Java class, and therein lies the convenience.
You can get at some/pkg/resource.properties programmatically from your Java code in several ways. First, try:
| Subject |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
It seems you are trying toBy henry.martin on November 18, 2008, 6:58 amIt seems you are trying to load properties file, the best way to load a properties file is to use 'ResourceBundle' class from java.util.* package. e.g ResourceBundle...
Reply | Read entire comment
Class Loader issueBy tilakkalyan on November 12, 2008, 9:56 amRather than using ClassLoader.getClassloader(), user this.getClass().getClassLoader() to load a resource.
Reply | Read entire comment
Try using Properties prop =By Shailesh Soliwal on November 3, 2008, 11:13 amTry using Properties prop = new Properties(); String pwd = System.getProperty("user.dir"); prop.load(new FileInputStream(new File(pwd+"\\com\\comp\\resource\\workflow.properties"))); Play...
Reply | Read entire comment
Loading from classpath dont workBy Anonymous on October 31, 2008, 12:02 pmClassLoader loader = ClassLoader.getSystemClassLoader(); System.out.println(loader.getClass().getName()); InputStream in = null; if (loader != null)...
Reply | Read entire comment
View all comments