JAVA sous Linux

Version 0.61
Document librement redistribuable SANS MODIFICATION
Auteur : Nat Makarevitch (nat@linux-france.org, linux-france) et Michel Casabianca

Ressources sur l'Internet

Installer le JDK (explorer aussi le site FTP du LIP6 (en France) JavaOnline (Nikitin) et ) sous /usr/local.

JDK 1.1.6 (section réalisée par Michel Casabianca)

Pour installer le JdK 1.1.6, procéder de la manière suivante :

Désintaller les versions précédentes ainsi que les autres compilateurs et machines virtuelles Java (jdk, kaffe, guavac) qui pourraient interférer avec le JdK.

Avec les distributions RedHat 4.2 et 5.0, il est nécessaire de supprimer les packages guavac, kaffe et bissawt (avec glint, chercher dans le répertoire développement/langages, avec rpm on pourra faire rpm -e guavac kaffe bissawt), avec la 5.1 bissawt est inclus dans le package kaffe.

Dézipper l'archive dans le répertoire /usr/local/.

Il faut maintenant inclure le répertoire des binaires du jdk dans le path. On peut le faire en incluant les lignes suivantes dans le fichier .bash_profile de votre répertoire :


export PATH=$PATH:/usr/local/jdk1.1.6/bin

Il peut être trés utile de définir la variable CLASSPATH par la ligne suivante dans le .bash_profile :


export CLASSPATH=.:/usr/local/jdk1.1.6/lib/classes.zip

La doc indique que ce n'est pas nécessaire, mais mon expérience personnelle me pousse à penser le contraire (en particulier lorsqu'on doit utiliser le paramétre -classpath avec l'appel à java).

Il existe deux versions du JdK : pour libc5 & glibc. J'ai rencontré des problèmes avec la glibc (même aprés avoir mis à jour mes bibliothèques) version 2, je recommande donc la libc5. Cependant, il est sorti une version 4, à tester.

INSTALLER JDE (section réalisée par Michel Casabianca)

JDE est un ensemble de fonctions Lisp permettant à Emacs de se transformer en EDI Java pouvant rivaliser avec ce qui se fait dans le commerce (dixit la doc, et c'est vrai). Il permet en particulier la coloration syntaxique, l'exploration des classes (affichage des champs et méthodes des classes du projet), l'affichage de la doc etc...

Pour installer JDE (que l'on pourra charger sur sunsite), il suffit de dézipper l'archive dans un répertoire de votre choix (par exemple /usr/local/jde-2.1.1). Il faut ensuite indiquer à Emacs le chemin de ces fonctions dans le fichier .emacs de votre répertoire par ces lignes :


(add-to-list 'load-path "/usr/local/jde-2.1.1") (add-hook 'java-mode-hook 'my-java-mode-hook) (defun my-java-mode-hook () (if (eq window-system 'x) ; (require 'andersl-java-font-lock) ; paquetage supplém. requis (turn-on-font-lock))) (require 'jde) ;; adapter ce qui suit : (setq jde-web-browser "/usr/local/bin/netscape") (setq jde-doc-dir "/usr/local/java/doc/") (jde-db-set-source-paths "/usr/local/java/")

Voila, c'est installé. Lorsqu'on charge dans Emacs un fichier .java, un nouveau menu JDE apparaît.

Installation JDK plus ancien

Tirer les liens symboliques utiles :
cd /usr/local
ln -sf jdk[numéro-de-version] java
cd /usr/bin
ln -sf ../local/java/bin/java
ln -sf ../local/java/bin/appletviewer

Lire attentivement la documentation (README.linux), en particulier pour ce qui concerne la variable d'environnement NS_JAVA et DYN_JAVA, afin d'apprendre comment réduire les exigences et accélérer le JDK.


Ajouter au /etc/ld.so.conf une ligne "/usr/local/java/lib/i586/green_threads" puis invoquer ldconfig.

La variable d'environnement CLASSPATH doit au moins contenir /usr/local/java/src. Pour cela ajouter une ligne CLASSPATH=.:/usr/local/java/src à /etc/profile.

En cas de message d'erreur "No library path set" utiliser la commande "which javac" ou bien "type -path javac" pour déterminer quel binaire est invoqué afin de vérifier qu'il correspond à ce qui a été installé et n'est donc pas un reliquat de version plus ancienne. Vérifier que seul le plus récent JDK est installé (Red Hat : "rpm -qa | grep -i 'java\|jdk'").

Si l'appletviewer ne fonctionne pas décompacter sur place le /usr/local/java/lib/classes.zip. En cas de problème persistant examiner le contenu de la varaible d'environnement $CLASSPATH afin de vérifier que, notamment, les classes de guavac n'intérfèrent pas.

Réinstaller après avoir désinstallé tout ce que votre distribution a mis en place : le JDK, kaffe, guavac ...

Pour exécuter des fichiers .class directement à partir de la ligne de commande il faut compiler le "support" Java dans le noyau (lire /usr/src/linux/Documentation/java.txt) et rendre ces fichiers exécutables : chmod +x nom_du_fichier.class

Essayer aussi (recommandé !) CompilExec, code Java grâce auquel compilation et exécution n'exigent pas de rechargement de la JVM (auteur : C. Blaess)

Infos issues de java-linux :

Si le JNI ne fonctionne pas ou si le JDK ne semble jamais restituer la mémoire allouée récupérer la libjava mise à jour.

En cas d'erreur Out of memory, exiting s'assurer que la machine dispose de mémoire virtuelle (« swap »), par exemple grâce à la commande free.

A. Parenteau note : Le JDK semble très sensible aux bibliothèques qu'il utilise. Je te conseille de mettre dans ton /etc/ld.so.conf em première ligne /usr/local/jdk/lib/Linux/green_thread et de faire un /sbin/ldconfig -v.

C. Jolif ajoute : Par défaut le jdk sous linux alloue quand meme pas mal de mémoire si elle n'est pas dispo en RAM+swap cela provoque cette erreur. Pour changer la mémoire allouée par défaut : dans les script se trouvant dans jdk/bin/.... changer les options -msXm passée à java pour mettre un X moins important (8 à la place de 16 par exemple).


En cas de problème de signal 11 :

Avec le JDK 1.1.5 : mettre à jour ld.so et la libc.

D. Rio note :
C'est un probleme que j'ai rencontré avec le portage de Sergey Nikitin (lagrange.la.asu.edu). En utilisant le portage de Steve Byrne ça marchait mieux.

É. Jacoboni note :
Essayer de désinstaller guavac.


De nombreux outils existent !
Conseil : examiner le constructeur graphique de Kawa, et Supercede.


Copyright © 1997, 1998 « IKARIOS »