web-dev-qa-db-fra.com

Jmeter ne démarre pas lors de l'exécution de la commande en tant qu'utilisateur non root

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
4
cinny

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:

https://stackoverflow.com/questions/10382929/how-to-fix-Java-lang-unsupportedclassversionerror-unsupported-major-minor-versi

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/

2
Elder Geek