Pour un projet personnel, j'ai essayé de faire fonctionner SmartGit/Hg depuis un lecteur portable. Pour ce faire, j'utilise la version "générique" qui fonctionne uniquement avec Java. Malheureusement, chaque fois que j'essaie de le lancer, les erreurs suivantes apparaissent :
Erreur d'invocation de SmartGit/Hg
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at QBootLoader.main(SourceFile:112)
Caused by: java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Display
at com.syntevo.q.gui.cl.a(SourceFile:43)
at smartgit.Xl.a(SourceFile:320)
at smartgit.anQ.a(SourceFile:229)
at smartgit.anQ.b(SourceFile:185)
at smartgit.anQ.a(SourceFile:72)
at smartgit.anR.a(SourceFile:114)
at smartgit.anR.call(SourceFile:111)
at com.syntevo.q.gui.cl.a(SourceFile:84)
at smartgit.anQ.a(SourceFile:111)
at smartgit.XA.b(SourceFile:62)
at SmartGit.main(SourceFile:11)
... 5 more
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.widgets.Display
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 16 more
Étant donné qu'il s'agit d'un programme commercial, je ne peux légalement vérifier aucun des fichiers mentionnés pour des erreurs. Si quelqu'un a déjà travaillé avec SmartGit/Hg et sait comment corriger cette erreur, j'apprécierais grandement toute aide. J'espère que ma question n'est pas trop spécifique et qu'elle ne sera pas retirée de la liste, car je n'ai trouvé aucune autre information sur les erreurs.
Légère addition d'information : Le lanceur qui est utilisé est dérivé du fichier .sh fourni suivant :
#!/bin/bash
#
# Normalement, l'édition de ce script ne devrait pas être nécessaire.
#
# Pour spécifier une autre environnement Java, définissez la variable d'environnement SMARTGITHG\_JAVA\_HOME
if \[ "$SMARTGITHG\_JAVA\_HOME" = "" \] ; then
SMARTGITHG\_JAVA\_HOME=$SMARTGIT\_JAVA\_HOME
fi
if \[ "$SMARTGITHG\_JAVA\_HOME" = "" \] && \[ -f "/usr/lib/jvm/java-7-openjdk-i386/jre/bin/java" \] ; then
SMARTGITHG\_JAVA\_HOME="/usr/lib/jvm/java-7-openjdk-i386/jre/bin/java"
fi
if \[ "$SMARTGITHG\_JAVA\_HOME" = "" \] ; then
SMARTGITHG\_JAVA\_HOME=$JAVA\_HOME
fi
if \[ "$SMARTGITHG\_MAX\_HEAP\_SIZE" = "" \] ; then
SMARTGITHG\_MAX\_HEAP\_SIZE=$SMARTGIT\_MAX\_HEAP\_SIZE
fi
if \[ "$SMARTGITHG\_MAX\_HEAP\_SIZE" = "" \] ; then
SMARTGITHG\_MAX\_HEAP\_SIZE=256m
fi
# cela semble nécessaire pour que Solaris trouve la bibliothèque Cairo
export LD\_LIBRARY\_PATH=${LD\_LIBRARY\_PATH}:/usr/lib/gnome-private/lib
\_JAVA\_EXEC="java"
if \[ "$SMARTGITHG\_JAVA\_HOME" != "" \] ; then
\_TMP="$SMARTGITHG\_JAVA\_HOME/bin/java"
if \[ -f "$\_TMP" \] ; then
if \[ -x "$\_TMP" \] ; then
\_JAVA\_EXEC="$\_TMP"
else
echo "Attention : $\_TMP n'est pas exécutable"
fi
else
echo "Attention : $\_TMP n'existe pas"
fi
fi
if ! which "$\_JAVA\_EXEC" >/dev/null ; then
echo "Erreur : Aucun environnement java trouvé"
exit 1
fi
#
# Résoudre l'emplacement de l'installation de SmartGit/Hg.
# Cela inclut la résolution de tous les liens symboliques.
PRG=$0
while \[ -h "$PRG" \]; do
ls=\`ls -ld "$PRG"\`
link=\`expr "$ls" : '^.\*-> \\(.\*\\)$' 2>/dev/null\`
if expr "$link" : '^/' 2> /dev/null >/dev/null; then
PRG="$link"
else
PRG="\`dirname "$PRG"\`/$link"
fi
done
SMARTGIT\_BIN=\`dirname "$PRG"\`
# dir en absolu
oldpwd=\`pwd\`
cd "${SMARTGIT\_BIN}"; SMARTGIT\_BIN=\`pwd\`
cd "${oldpwd}"; unset oldpwd
SMARTGIT\_HOME=\`dirname "$SMARTGIT\_BIN"\`
# La ligne suivante est pour contourner le bogue SWT suivant :
# https://bugs.eclipse.org/bugs/show\_bug.cgi?id=419729
UBUNTU\_MENUPROXY=0
\_VM\_PROPERTIES="-Dsun.io.useCanonCaches=false"
# Décommentez la ligne suivante pour changer l'emplacement où SmartGit/Hg doit stocker
# les paramètres (le chemin d'exemple donné rendra SmartGit/Hg portable en stockant les paramètres
# dans le répertoire d'installation) :
#\_VM\_PROPERTIES="$\_VM\_PROPERTIES -Dsmartgit.settings=\\${smartgit.installation}/.smartgit"
$\_JAVA\_EXEC $\_VM\_PROPERTIES -Xmx${SMARTGITHG\_MAX\_HEAP\_SIZE} -Xverify:none -Dsmartgit.vm-xmx=${SMARTGITHG\_MAX\_HEAP\_SIZE} -jar "$SMARTGIT\_HOME/lib/bootloader.jar" "$@"