web-dev-qa-db-ja.com

非rootユーザーとしてコマンドを実行しているときにJmeterが起動しない

Rootユーザーとしてjmeterフォームubuntu 16.10ターミナルを起動できます。ただし、rootで試行したのと同じコマンドを実行して、非rootユーザーを使用してjmeterを起動しようとすると、次のエラーが表示されます。誰かが私を既存の非rootユーザー(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)。ただし、サポートされているJavaバージョン8が代替で既に構成されていることがわかります。

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

これはテストの結果ではなく、単に調査であることに注意してください。この答えに対する建設的な批判は、テスト済みのソリューションと同様に歓迎されます。

一般的に言えば:

このエラーは、コンパイル時に使用されたJava(JDK)のバージョンと、実行時または複数のバージョンが同時にインストールされたときのJavaのバージョンの不一致が原因で発生するようですここに該当するようです)。

コンパイラのバージョンを確認して比較できます

javac -version

とランタイム

Java -version

実際の問題を修正するには、新しいバージョンのJava JREでJavaコードを実行するか、Javaコンパイラにターゲットパラメータを指定して指示するようにしてください。以前のJavaバージョンと互換性のあるコードを作成するコンパイラ。

これを解決する方法はいくつかありますが、適切なJREでコードが実行されるようにするか、現在使用されているJREと互換性があるようにすることでアプローチするかどうかに要約できます。

前者の場合、解決策の1つの例は、シンボリックリンク(/ etc/alternatives/Java->/usr/lib/jvm/Java-8-openjdk-AMD64/jre/bin/Java)をコンパイルに使用されるバージョンに変更することです。

後者の場合、解決策は、クロスコンパイルオプションを使用して、使用しようとしているJavaの以前のランタイムバージョンと互換性のある新しいクラスファイルを生成することです。たとえば、Java 1.4と互換性のあるクラスファイルを生成するには、次のコマンドラインを使用します。

javac -target 1.4 HelloWorld.Java

具体的には:

独自に展開する場合でも、 here からダウンロードしたビルド済みのJmeterバイナリを使用する場合でも、 整合性を検証する ]が重要です。

Jmeter 3.1はJava 7以降を必要とするため、shouldは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
Elder Geek