[Linux-31] Problème avec Jclic programme en java
Claude Micouin
mlnglst at free.fr
Lun 5 Nov 19:32:04 CET 2012
Bonjour.
J'ai découvert il y a quelques temps un programme éducatif très
intéressant qui s'appelle Jclic et qui est développé par la Communauté
Autonome de Catalogne.
http://clic.xtec.cat/en/jclic/
http://doc.ubuntu-fr.org/jclic
http://jclic.clicapplic.net/
C'est ce qu'on appelle un système auteur: il est très facile à utiliser pour
un utilisateur final (un peu comme un traitement de texte) pour créer des
exercices éducatifs. De plus, il est multi-plateforme vu qu'il utilise la
machine virtuelle Java. Donc aucun problème pour passer de Windows, Mac à
Linux. Voila donc pour le côté pub.
J'ai cependant un souci pour l'utiliser sur le réseau de l'école où je
travaille. C'est un réseau local (serveur + clients légers) tournant avec
Ubuntu Lucid 2.6.32-44-generic (le matériel et la distribution commencent à
dater un peu). La maintenance, comme tout ce qui est dans l'Éducation
nationale, il n'y a pour ainsi dire pas. Donc, c'est la case "débrouille-
toi"...
J'avais installé Jclic il y a quelques temps et un premier problème se
posait: il était impossible de lancer l'application sur un client
(l'application fonctionnait bien sur le serveur en revanche). Si je me
rappelle bien, le message d'erreur dans la console signalait un problème de
son.
J'avais remplacé le fichier /usr/bin/jclic d'origine par un autre trouvé
sur un forum espagnol. Visiblement, le problème venait de pulseaudio et le
nouveau script semblait régler le problème.
Mais, il y a un autre problème qui cause un fonctionnemet assez cocasse:
il est impossible de lancer l'application sur deux (ou +) clients/utilisateurs
à la fois à partir du navigateur de fichier (nautilus) ou dans un émulateur de
terminal (jclic /chemin/exercice.jclic.zip) .
Lorsqu'un utilisateur toto lance l'application en cliquant sur un exercice
et l'utilisateur suivant titi fait la même manœuvre sur un autre exercice,
l'exercice démarre, mais sur le compte et donc l'écran de toto ! Même chose si
tata lance un autre exercice: il s'affichera sur le compte de toto et à la place
de son propre exercice. Pagaille assurée donc quand ça t'arrive avec la classe
sur les bras. :-(
Par contre, tout fonctionne bien si titi et tata lance l'exercice depuis
Jclic via son propre navigateur (pas très commode à utiliser vu son absence de
raccourcis). Assez surprenant...
Je dois avouer que je me casse la tête depuis un moment sur ce problème.
Si quelqu'un avait une idée pour le résoudre, ça m'arrangerait beaucoup?
Merci.
Claude Micouin
#################################################"
/usr/bin/jclic
#!/bin/sh
# jclicplayer wrapper script
# code for java detection based on tuxguitar code
# but adding detection of alternatives for jclic
if [ -z $JAVA_HOME ] ; then
ALTERNATIVE=`ls -l /etc/alternatives/java|grep sun`
if [ -z "$ALTERNATIVE" ]; then
ALTERNATIVE=`ls -l /etc/alternatives/java|grep openjdk`
fi
if [ -z "$ALTERNATIVE" ]; then
t=/usr/lib/jvm/java-1.5.0-sun && test -d $t && JAVA_HOME=$t
t=/usr/lib/jvm/java-6-sun && test -d $t && JAVA_HOME=$t
t=/usr/lib/jvm/java-7-icedtea && test -d $t && JAVA_HOME=$t
JAVA=${JAVA_HOME}/jre/bin/java
fi
fi
# detect pulseaudio with $DISPLAY and "pactl stat"
REMOTE_DISPLAY=$(echo $DISPLAY| awk -F ":" '{print $1}')
if [ "x${REMOTE_DISPLAY}" != "x" ]; then
# remote PULSEAUDIO
if [ -x /usr/bin/padsp ] && [ -x /usr/bin/pactl ] && pactl stat >/dev/null
2>&1; then
PULSE_AUDIO="padsp -s $REMOTE_DISPLAY -n JClic -m JClic-stream"
fi
else
# local PULSEAUDIO
if [ -x /usr/bin/padsp ] && [ -x /usr/bin/pactl ] && pactl stat >/dev/null
2>&1; then
PULSE_AUDIO="padsp"
fi
fi
export JAVA=${JAVA:=java}
exec $PULSE_AUDIO $JAVA -jar /usr/share/java/jclic.jar "$@" >/dev/null 2>&1
#################################################"
ET
#################################################
/usr/bin/jclic-orig
#!/bin/sh
# jclicplayer wrapper script
# code for java detection based on tuxguitar code
# but adding detection of alternatives for jclic
if [ -z $JAVA_HOME ] ; then
ALTERNATIVE=`ls -l /etc/alternatives/java|grep sun`
if [ -z "$ALTERNATIVE" ]; then
ALTERNATIVE=`ls -l /etc/alternatives/java|grep openjdk`
fi
if [ -z "$ALTERNATIVE" ]; then
t=/usr/lib/jvm/java-1.5.0-sun && test -d $t && JAVA_HOME=$t
t=/usr/lib/jvm/java-6-sun && test -d $t && JAVA_HOME=$t
t=/usr/lib/jvm/java-7-icedtea && test -d $t && JAVA_HOME=$t
JAVA=${JAVA_HOME}/jre/bin/java
fi
fi
REMOTE_DISPLAY=$(echo $DISPLAY| awk -F ":" '{print $1}')
if [ "${REMOTE_DISPLAY}" != "" ]; then
if [ -x /usr/bin/padsp ]; then
padsp -s "$REMOTE_DISPLAY" -n JClic -m JClic-stream $aux -cp $CLASSPATH -
jar /usr/share/java/jclic.jar "$@" &>/dev/null
exit 0
fi
fi
export JAVA=${JAVA:=java}
PULSE_AUDIO=""
if [ -d /tmp/${USER}-pulse/ ]; then
PULSE_AUDIO="padsp"
fi
exec $PULSE_AUDIO $JAVA -jar /usr/share/java/jclic.jar "$@" &>/dev/null
#################################################
--
Claude Micouin mlnglst at free.fr http://astuce.linux.free.fr
J'utilise la nouvelle orthographe recommandée par l'Académie française et par
l'Éducation nationale. Merci de ne pas me joindre de textes aux
formats "doc" ou "ppt", mais aux formats «html», «pdf», «rtf» ou «txt».
Plus d'informations sur la liste de diffusion Linux-31