Preskočiť na hlavný obsah

Jar's extended features

JARs are Java Archives. They can do much more than only store source your compilations. JARs, WARs and EARs, can hold extra informations to be useful later in the runtime.


JAR can be executable
JAR file can be "executable". Java launcher will automatically know which class to launch when executing the JAR file. You should create an entry into the JAR's manifest file MANIFEST.MF in the JAR's META-INF subdirectory:
Main-Class: com.jpoint.Hello

Now you can execute your code via java -jar app.jar. In your GUI, double-click the JAR file to do the same.


JARs can hold dependency informatin
JARs allows a declaration of other JAR dependencies to be in the manifest, which implicitly creates the CLASSPATH without you having to declare it.

The Class-Path attribute contains a relative reference to the JAR files the application depends on. It can be written as an absolute reference or without a prefix entirely, in which case it would be assumed that the JAR files were in the same directory as the application JAR. The value attribute of the Ant Class-Path attribute has to appear in one line.


JARs can be implicitly referenced
If you have several different command-line utilities (or other applications) that make use (e.g) of the Spring framework, you can put the Spring JAR files into a common location. to avoid having multiple copies of JARs. The Java runtime's common location for JARs, known as the "extension directory," is located in the lib/ext subdirectory, underneath the installed JRE location


Java 6 can use classpath wildcards
To avoid huge CLASSPATH environment variables or command-line -classpath parameters, Java 6 introduced the notion of the classpath wildcard. The classpath wildcard lets you specify lib/*, and all of the JAR files listed in that directory (but not recursively), in the classpath. The classpath wildcard doesn't hold for the previously discussed Class-Path attribute manifest entry.

Obľúbené príspevky z tohto blogu

mysql 5.0 upgrade to 5.1

The 5.1 series of MySQLwas unmasked for the gentoo portage. When upgrading from an older major version (including 5.0), you will be required to rebuild everything linked to the libmysqlclient.so.15 and libmysqlclient_r.so.15. You can do this by installing app-portage/gentoolkit and running: # revdep-rebuild --library libmysqlclient.so.15 # revdep-rebuild --library libmysqlclient_r.so.15 If you use the Portage 2.2 series, you may also use: # emerge @preserved-rebuild The official upgrade documentation is available here: http://dev.mysql.com/doc/refman/5.1/en/upgrading.html Note that existing databases may need converting as well, again including those upgrading from 5.0 to 5.1.

JDK 8

The goal of this Project is to to produce an open-source reference implementation of the Java SE 8 Platform, to be defined by JSR 337 in the Java Community Process. This Project is sponsored by the Build Group. History and status JDK 8 as presently conceived is the second part of Plan B. The proposed release-driver features are the Lambda and Jigsaw Projects. Additional features will be included, but they must fit into the schedule required for the release drivers. Now that work on JDK 7 is winding down, the next couple of months will be devoted to planning JDK 8 in detail. The proposed JEP Process will be a key part of this effort. Details on how Committers can participate in that process will be available shortly. Plan A: JDK 7 (as currently defined) Mid 2012 Plan B: JDK 7 (minus Lambda, Jigsaw, and part of Coin) Mid 2011 JDK 8 (Lambda, Jigsaw, the rest of Coin, ++) Late 2012