Jmeter, не запускающий, в то время как excuting управляют как некорневой пользователь

Я могу запустить терминал человечности 16.10 формы jmeter как пользователь root. Однако, Если я пытаюсь запустить jmeter использование некорневого пользователя путем выполнения той же команды как в испытанном для корня. Я получаю следующую ошибку. Может кто-то помогать мне устранить проблему для существующего некорневого пользователя (Не 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

Ошибка, кажется, связана с неподдерживаемой версией JAVA (Неподдерживаемая major.minor версия 52.0). Но Вы видите, что поддерживаемая версия 8 JAVA уже настроена в альтернативах

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
задан 15 February 2017 в 17:01

1 ответ

Обратите внимание, что это не результат тестирования, просто исследования. Конструктивная критика этому ответу приветствуется, как протестированные решения.

Вообще говоря:

Эта ошибка, кажется, происходит из-за несоответствия между версией Java (JDK), использовал время компиляции и версию Java, доступного во времени выполнения или когда несколько версий установлены одновременно (как это, кажется, имеет место здесь).

Можно проверить и сравнить версии с для компилятора

javac -version

и время выполнения с

java -version

Для решения фактической проблемы, необходимо попытаться или выполнить код Java с более новой версией Java JRE или указать целевой параметр к компилятору Java, чтобы дать компилятору команду создавать код, совместимый с более ранними версиями Java.

Существует несколько способов разрешить это, это, кажется, сводится к тому, хотите ли Вы приблизиться к нему путем обеспечения, чтобы код был выполнен правильным JRE или обеспечив, чтобы код был совместим с в настоящее время используемым JRE.

Для первого одно решение в качестве примера состоит в том, чтобы изменить символьную ссылку (/etc/alternatives/java->/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java) к версии, используемой для компиляции.

Для последнего решение состоит в том, чтобы генерировать новые файлы класса, совместимые с более ранней версией среды выполнения Java, который Вы пытаетесь использовать путем Использования опций Кросс-компиляции. Например, для генерации файлов класса, совместимых с Java 1.4, используйте следующую командную строку:

javac - будьте нацелены на 1.4 HelloWorld.java

Конкретно говорить:

Прокручиваете ли Вы свое собственное или используете предварительно созданный двоичный файл Jmeter, загруженного отсюда, важно проверить целостность.]

Обратите внимание, что Jmeter 3.1 Требует Java 7 или позже таким образом, он должен работать с Вашим Java 8, но так как Вы не выполняете MAC OSX нет никакой причины не попробовать его Java 7

Другое возможное решение состоит в том, чтобы исправить переменную среды JAVA_HOME.

С

export JAVA_HOME=jdk-install-dir

export PATH=$JAVA_HOME/bin:$PATH

Источники:

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
ответ дан 1 December 2019 в 10:16

Другие вопросы по тегам:

Похожие вопросы: