0

我正在尝试将我的 java 应用程序作为 Windows 服务运行。我按照这里所说的做了:http: //web.archive.org/web/20090228071059/http ://blog.platinumsolutions.com/node/234

http://commons.apache.org/daemon/procrun.html

我得到了这个例外:

  2013-02-04 14:52:25 Commons Daemon procrun stderr initialized
  java.lang.UnsupportedClassVersionError: serviceWrapper : Unsupported major.minor version 51.0
      at java.lang.ClassLoader.defineClass1(Native Method)
      at java.lang.ClassLoader.defineClassCond(Unknown Source)
      at java.lang.ClassLoader.defineClass(Unknown Source)
      at java.security.SecureClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.defineClass(Unknown Source)
      at java.net.URLClassLoader.access$000(Unknown Source)
      at java.net.URLClassLoader$1.run(Unknown Source)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.net.URLClassLoader.findClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
      at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
      at java.lang.ClassLoader.loadClass(Unknown Source)
  Exception in thread "main"   
4

4 回答 4

0

此异常表示您正在运行的 JRE 是 Java 6.0 或更早版本,但您尝试运行的类(或至少其中一些)已使用 Java 7.0 编译器编译。

有两种方法可以解决这个问题:

  • 将您的执行平台升级到 Java 7.0,您的代码应该按原样运行。

  • 为 Java 6.0(或更早版本)平台重新编译您的代码:

    • 安装 Java 6.0(或更早版本)JDK 并重新编译您的代码。

    • 使用现有的 Java 7.0 构建环境编译代码,但使用合适的“-target”和“-bootclasspath”选项让编译器生成 Java 6.0 兼容代码。

(我建议升级...)

于 2013-02-04T14:12:03.763 回答
0

java.lang.UnsupportedClassVersionError 的发生是因为编译时 JDK 较高,而运行时 JDK 较低。

显示的版本号描述了类文件兼容的 JRE 版本。

J2SE 7 = 51,
J2SE 6.0 = 50,
J2SE 5.0 = 49,
JDK 1.4 = 48,
JDK 1.3 = 47,
JDK 1.2 = 46,
JDK 1.1 = 45
于 2013-02-04T13:14:57.717 回答
0

您的应用程序是 Java 7 应用程序,但看起来您拥有 Java 6(或更低版本)。您可以在 Java 网站上安装 Java 7 。

于 2013-02-04T13:16:15.610 回答
0

您的 Windows 上安装的默认 JRE 似乎是 1.6 或更低,而您尝试运行的类是在 Java 7 下编译的。

于 2013-02-04T13:14:15.017 回答