0

Apache Tomcat サーバーで java.class ファイルを実行しようとしています。Maven を使用してビルドします。

次のコマンドを使用します。

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64/jre/bin/java -cp ".:/var/lib/tomcat6/webapps/my-servlet/WEB-INF/lib/*:/var/lib/tomcat6/webapps/my-servlet/WEB-INF/classes" com.myservlet.helper.MyClassFile

エラーは次のとおりです。

Exception in thread "main" java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/servlet/ServletException
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:792)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Class.java:2511)
    at java.lang.Class.getMethod0(Class.java:2754)
    at java.lang.Class.getMethod(Class.java:1657)
    at sun.launcher.LauncherHelper.getMainMethod(LauncherHelper.java:494)
    at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:486)

そして私のJavaバージョン:

java version "1.8.0_40"  
Java(TM) SE Runtime Environment (build 1.8.0_40-b25)  
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

このエラーに関するいくつかのスレッドを読みましたが、これまでのところ解決に成功していません。どんな助けでも大歓迎です!

4

1 に答える 1

0

ここで何かがおかしい。実行可能 java へのディレクトリ パス

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.25.x86_64/jre/bin/java

openJDK バージョン 1.7を提案すると、 Oracle Hotspot JVM 1.8を使用していると述べます。1.8 Hotspot バージョンでコンパイルし、他のバージョンを使用して実行しようとしていると思います。それを修正するには、一貫して使用するだけです。特に理由がなければ、おそらく標準のホットスポットです。

于 2015-07-17T20:48:57.060 に答える