4 votes

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

Je suis capable de démarrer jmeter depuis le terminal ubuntu 16.10 en tant qu'utilisateur root. Cependant, si j'essaie de démarrer jmeter en utilisant un utilisateur non root en exécutant la même commande que celle utilisée pour root. J'obtiens l'erreur suivante. Quelqu'un peut-il m'aider à résoudre ce problème pour un utilisateur non root (pas un utilisateur 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 de JAVA non prise en charge (version majeure et mineure non prise en charge 52.0). Mais vous pouvez voir que la version 8 de JAVA supportée est déjà configurée dans les 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

2voto

Elder Geek Points 34144

Notez que ce n'est pas le résultat de tests, mais seulement d'une recherche. Les critiques constructives sur cette réponse sont les bienvenues, tout comme les solutions testées.

D'une manière générale :

Cette erreur semble se produire en raison d'un décalage entre la version de Java (JDK) utilisée au moment 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 cela 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 actuel, vous devez essayer d'exécuter le code Java avec une version plus récente de Java JRE ou spécifier le paramètre target au compilateur Java pour lui demander de créer un code compatible avec les versions antérieures de Java.

Il y a plusieurs façons de résoudre ce problème, qui semble se résumer à savoir si l'on veut s'assurer que le code sera exécuté par le bon JRE ou si l'on veut s'assurer que le code est compatible avec le JRE utilisé actuellement.

Dans le premier cas, un exemple de solution consiste à modifier le lien symbolique (/etc/alternatives/java -> /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java) vers la version utilisée pour la compilation.

Dans ce dernier cas, une solution consiste à générer de nouveaux fichiers de classe compatibles avec une version d'exécution antérieure de Java que vous tentez d'utiliser en utilisant 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 fassiez votre propre développement ou que vous utilisiez un binaire préconstruit de Jmeter téléchargé à partir de l'adresse suivante aquí il est important de vérifier l'intégrité. ]

Notez que Jmeter 3.1 requiert Java 7 ou une version plus récente. debe fonctionner avec votre Java 8, mais comme vous n'utilisez pas MAC OSX, il n'y a pas d'autre solution. raison de 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/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X