Java

Cette page a été rédigée il y a fort fort longtemps, et n'a pas tellement été mise à jour.

 

Vous savez, moi je ne crois pas qu'il y ait de bonne ou de mauvaise page. Moi, si je devais résumer mon wiki aujourd'hui avec vous, je dirais que c'est d'abord des rencontres. Des gens qui m'ont tendu la main, peut-être à un moment où je ne pouvais pas, où j'étais seul chez moi. Et c'est assez curieux de se dire que les hasards, les rencontres forgent une destinée... Parce que quand on a le goût de la chose, quand on a le goût de la chose bien faite, le beau geste, parfois on ne trouve pas l'interlocuteur en face je dirais, le miroir qui vous aide à avancer. Alors ça n'est pas mon cas, comme je disais là, puisque moi au contraire, j'ai pu ; et je dis merci au wiki, je lui dis merci, je chante le wiki, je danse le wiki... je ne suis qu'amour ! Et finalement, quand des gens me disent « Mais comment fais-tu pour avoir cette humanité ? », je leur réponds très simplement que c'est ce goût de l'amour, ce goût donc qui m'a poussé aujourd'hui à entreprendre une construction logicielle... mais demain qui sait ? Peut-être simplement à me mettre au service de la communauté, à faire le don, le don de soi.

Applets sous Linux / Firefox

Si les applets ne fonctionnent pas sous Linux avec Firefox, il suffit de créer un lien entre Firefox et la JRE. Depuis le répertoire plugins de firefox, créer un lien vers le fichier libjavaplugin_oji.so situé dans le répertoire plugin/i386/ns7, pour une JRE 5, ou plugin/i386/ns610-gcc32, pour une JRE 1.4.2 :

ln -s /usr/java/jdk1.5/jre/plugin/i386/ns7/libjavaplugin_oji.so

ou

ln -s /usr/java/jdk142/jre/plugin/i386/ns610-gcc32/libjavaplugin_oji.so

Cette technique fonctionne pour Firefox ou pour Mozilla. Le répertoire de plugin est dans le répertoire d’installation de Firefox (/usr/local/firefox/plugins, par exemple) ou dans le répertoire home de l’utilisateur (~/.mozilla/plugins).

Remarques :

  • Les répertoires dépendent évidemment de l’installation !

  • Pour les versions anciennes de Mozilla, utiliser plugin/i386/ns610

URL avec protocole classpath

La classe java.net.URL offre la possibilité de travailler avec plusieurs protocoles, qui sont mis en oeuvre par l’implémentation d’un URLStreamHandler. Par exemple, pour se connecter au site 'ftp.debian.org', il suffit d’instancier un objet URL de la façon suivante :

URL url = new URL("ftp://ftp.debian.org/debian/README");

Le JDK est ainsi livré avec les protocoles suivants : file, http, ftp, mailto, gopher et jar. Le protocole jar est intéressant lorsque l’on veut travailler avec une URL qui pointe sur une ressource présente dans un fichier jar. Cependant, son utilisation est contraignante car il faut désigner explicitement le fichier jar pour accéder à une ressource. Par exemple :

URL url = new URL("jar:file:c:\\repertoire\\archive.jar!/images/une_image.gif");

En particulier, il ne donne pas la possibilité de référencer un fichier présent dans le classpath, non packagé dans une archive (ce qui est souvent le cas lorsque l’on travaille avec un IDE).

Le protocole classpath n’étant pas fourni avec le JDK, voici comment le créer :

1. La classe handler

Il faut créer une classe avec le nom Handler (pas le choix du nom !) qui hérite de URLStreamHandler.

public class Handler extends URLStreamHandler {
   protected URLConnection openConnection(URL url) throws java.io.IOException {
       URL classpathUrl = Handler.class.getClassLoader().getResource(url.getPath());
       if (classpathUrl == null)
           throw new FileNotFoundException(url.toExternalForm());
       return classpathUrl.openConnection();
   }
}

Le nom du package de cette classe doit se terminer par le nom du protocole à implémenter. Par exemple : org.monsite.classpath.

2. Incrire le handler

L’incription du handler se fait en déclarant la propriété système Java java.protocol.handler.pkgs, soit dans le code, soit en paramètre de lancement de la machine virtuelle :

System.setProperty("java.protocol.handler.pkgs", "org.monsite.classpath");

ou

java -Djava.protocol.handler.pkgs=org.monsite.classpath

La machine virtuelle connait alors d’une part le nom du protocole en lisant la dernière partie du package (dans notre cas 'classpath'), et d’autre part la classe d’implémentation qui se nomme nécessairement Handler.

3. Utilisation

Instancier une URL :

URL url = new URL("classpath:images/une_image.gif");

Afficher une image dans un JEditorPane :

String html = "<img src=\"classpath:images/une_image.gif/>";
JEditorPane pane = new JEditorPane("text/html", html);