Je suis en mesure de démarrer jmeter sous ubuntu 16.10 terminal en tant qu'utilisateur root. Cependant, si j’essaie de démarrer jmeter avec un utilisateur non-root, en exécutant la même commande que celle essayée pour root. Je reçois l'erreur suivante. Quelqu'un peut-il m'aider à résoudre le problème pour un utilisateur non root existant (utilisateur non Sudo)
user@laptop1:~$jmeter
Java.lang.UnsupportedClassVersionError: com/thoughtworks/xstream/converters/ConversionException : Unsupported major.minor version 52.0
at Java.lang.ClassLoader.defineClass1(Native Method)
at Java.lang.ClassLoader.defineClassCond(ClassLoader.Java:631)
at Java.lang.ClassLoader.defineClass(ClassLoader.Java:615)
at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:141)
at Java.net.URLClassLoader.defineClass(URLClassLoader.Java:283)
at Java.net.URLClassLoader.access$000(URLClassLoader.Java:58)
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:197)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:190)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:306)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:247)
at Java.lang.Class.getDeclaredConstructors0(Native Method)
at Java.lang.Class.privateGetDeclaredConstructors(Class.Java:2398)
at Java.lang.Class.getConstructor0(Class.Java:2708)
at Java.lang.Class.newInstance0(Class.Java:328)
at Java.lang.Class.newInstance(Class.Java:310)
at org.Apache.jmeter.NewDriver.main(NewDriver.Java:262)
JMeter home directory was detected as: /usr/share/jmeter
L'erreur semble être liée à une version non prise en charge de la version Java (version majeure non prise en charge 52.0). Mais vous pouvez voir que la version supportée de Java est déjà configurée dans des alternatives
update-alternatives --config Java
There are 3 choices for the alternative Java (providing /usr/bin/Java).
Selection Path Priority Status
-----------------------------------------------------------
0 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 auto mode
1 /usr/lib/jvm/Java-6-Oracle/jre/bin/Java 2 manual mode
2 /usr/lib/jvm/Java-7-Oracle/jre/bin/Java 1 manual mode
* 3 /usr/lib/jvm/Java-8-Oracle/jre/bin/Java 1081 manual mode
guest@duriel:~$ which Java
/usr/bin/Java
$ ls -la /usr/bin/Java
lrwxrwxrwx 1 root root 22 Nov 27 2015 /usr/bin/Java -> /etc/alternatives/Java
$ ls -la /etc/alternatives/Java
lrwxrwxrwx 1 root root 46 Feb 9 09:43 /etc/alternatives/Java -> /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java
$ ls -la /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java
-rwxr-xr-x 1 root root 6456 Jan 24 14:22 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java
$ update-alternatives --config Java
There are 2 choices for the alternative Java (providing /usr/bin/Java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 auto mode
1 /usr/lib/jvm/Java-7-openjdk-AMD64/jre/bin/Java 1071 manual mode
2 /usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java 1081 manual mode
Notez que ce n'est pas le résultat d'essais, mais simplement de recherches. Les critiques constructives de cette réponse sont les bienvenues, de même que les solutions testées.
En général:
Cette erreur semble être due à une incompatibilité entre la version de Java (JDK) utilisée lors de la compilation et la version de Java disponible au moment de l'exécution ou lorsque plusieurs versions sont installées simultanément (comme semble être le cas ici).
Vous pouvez vérifier et comparer les versions avec pour le compilateur
javac -version
et le runtime avec
Java -version
Pour résoudre le problème, essayez d’exécuter le code Java avec une version plus récente de Java JRE ou indiquez le paramètre cible au compilateur Java pour indiquer Le compilateur crée un code compatible avec les versions antérieures Java.
Il y a plusieurs façons de résoudre ce problème. Cela semble se résumer à la question de savoir si vous voulez vous en approcher en vous assurant que le code sera exécuté par le bon JRE ou en s'assurant que le code est compatible avec le JRE utilisé actuellement.
Pour les premiers, un exemple de solution consiste à changer le lien symbolique (/ etc/alternatives/Java ->/usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java) à la version utilisée pour la compilation.
Pour ces derniers, une solution consiste à générer de nouveaux fichiers de classe compatibles avec une version d'exécution antérieure de Java que vous essayez d'utiliser avec les options de compilation croisée. Par exemple, pour générer des fichiers de classe compatibles avec Java 1.4, utilisez la ligne de commande suivante:
javac -target 1.4 HelloWorld.Java
Plus précisément:
Que vous utilisiez votre propre binaire ou que vous utilisiez un binaire pré-construit de Jmeter téléchargé depuis ici il est important de vérifiez l’intégrité. ]
Notez que Jmeter 3.1 nécessite Java 7 ou une version ultérieure, de sorte que doit fonctionner avec votre Java 8, mais depuis. vous n’utilisez pas MAC OSX, il n’ya pas de raison pour ne pas l’essayer avec Java 7
Une autre solution possible consiste à corriger la variable d’environnement Java_HOME.
Avec
export Java_HOME=jdk-install-dir
export PATH=$Java_HOME/bin:$PATH
Sources:
http://docs.Oracle.com/javase/7/docs/technotes/tools/windows/javac.html
http://www.manpagez.com/man/1/javac/
http://jmeter.Apache.org/usermanual/get-started.html#classpath
https://jmeter.Apache.org/download_jmeter.cgi
https://jmeter.Apache.org/changes.html
https://docs.Oracle.com/cd/E19182-01/820-7851/inst_cli_jdk_javahome_t/