21 novembre 2005

Comment régler le problème de Swing avec Fedora Core 4

En utilisant Linux Fedora Core 4, je ne pouvait lancer aucune application swing ou awt, à chaque exécution l'application se plantait et me lançait l'exception suivante :
Exception in thread "main" java.lang.UnsatisfiedLinkError: /opt/java/jre/lib/i386/libawt.so: libXp.so.6:
cannot open shared object file: No such file or directory
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1503)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50)
at java.security.AccessController.doPrivileged(Native Method)
at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38)
at sun.awt.DebugHelper.(DebugHelper.java:29)
at java.awt.Component.(Component.java:506)

La raison est que Fedora n'utilise pas Xfree86 mais plutôt X.org, et il semblerait que les librairies de la JVM ont été compilés avec la libXp.so.6 utilisée par Xfree86, et qui a été déprécié avec X.org.

Néanmoins il est possible d'installer cette librairie. Pour ce faire il faut disposer de son CD Fedora et d'installer le rpm de ladite librairie.

rpm -ivh xorg-x11-deprecated-libs-6.8.2-31.i386.rpm

Et le tour est joué !

20 novembre 2005

JBoss : Comment nommer le contexte de votre application Web

Par défaut Si vous déployez votre application Web le contexte prendra le nom de l'archive WAR.Exemple :

Si le fichier WAR s'appelle : myapp.war vous accéderez à votre application avec cette URL : http://127.0.0.1:8080/myapp

Mais si vous voulez la nommer explicitement, il faut ajouter le fichier jboss-web.xml (qui se situra au même niveau que web.xml c-à-d dans WEB-INF) dans lequel vous écrierez les lignes suivantes :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE jboss-web PUBLIC
"-//JBoss//DTD Web Application 2.4//EN"
"http://www.jboss.org/j2ee/dtd/jboss-web_4_0.dtd">

<jboss-web>
<context-root>/mycontext</context-root>
</jboss-web>

Dans cet exemple même si le WAR s'appelle myapp.war vous accéderez, cette fois-ci, à votre application via l'URL suivante : http://127.0.0.1:8080/mycontext.