当前位置: 首页 > 知识库问答 >
问题:

osgi包已解决,但在运行时给出异常,不支持主。次版本51.0

邹毅
2023-03-14

我对在现有的Tomcat中添加我自己的包感兴趣。因此,我在另一台机器上开发并测试了一个样例包,该包具有Java1.7和所选编译器的兼容性为1.6,该包在其他机器上运行良好。当我部署包时,它有一个解析状态,但是当我尝试启动包时,它抛出“unsupported major.minor version 51”。

更新:很明显,我部署了一个仍然在Java1.7中编译的包的旧版本,我重新编译了一个兼容1.6的包,现在包是活动的。

    osgi> ss sample

    Framework is launched.

    id      State       Bundle
    77      RESOLVED    sample.http2_1.0.0.2

    osgi> start 77
    org.osgi.framework.BundleException: The activator sample.http2.Activator for bundle sample.http2 is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:157)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:750)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:253)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:155)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:303)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:288)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:224)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.UnsupportedClassVersionError: sample/http2/Activator : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:321)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:150)
    ... 14 more
    Nested Exception:
    java.lang.UnsupportedClassVersionError: sample/http2/Activator : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:321)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:150)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:750)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:253)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:155)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:303)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:288)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:224)
    at java.lang.Thread.run(Thread.java:619)
    Nested Exception:
    java.lang.UnsupportedClassVersionError: sample/http2/Activator : Unsupported major.minor version 51.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:183)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:576)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:546)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:477)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:465)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:445)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
    at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:376)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:452)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:405)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:393)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:105)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:321)
    at org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:231)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:150)
    at org.eclipse.osgi.framework.internal.core.BundleContextImpl.start(BundleContextImpl.java:750)
    at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:352)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:280)
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.start(AbstractBundle.java:272)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._start(FrameworkCommandProvider.java:253)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.execute(FrameworkCommandInterpreter.java:155)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(FrameworkConsole.java:303)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(FrameworkConsole.java:288)
    at org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkConsole.java:224)
    at java.lang.Thread.run(Thread.java:619)

    osgi>       

共有1个答案

史宸
2023-03-14

您的类文件是为Java7(Version=51)编译的,但您(可能)在Java6(Version=50)上运行它,参见维基百科。

所以它只是VM在一个未知的类文件面前犹豫不决。请注意,Java有不同的兼容性设置。有Java源级兼容性和Java目标兼容性。类格式文件版本由目标兼容性设置,请参见另一个stackoverflow问题。在javac中,您希望指定-target1.6。

当您使用OSGi中的OSGi Bundle-RequiredExecutionEnvironment选项时,您可以在启动应用程序之前得到一个更易读的错误。

 类似资料:
  • 当我使用IntelliJ时,一切运行都没有问题,但是当我尝试在命令行中编译和运行Scala代码时(使用),会弹出以下错误消息。 我使用的是Ubuntu 14.04 LTS。 我的Scala版本是2.9.2。 几周前我才刚刚开始学习Scala,所以如果有人能就我应该研究的内容提供一些建议,我将不胜感激。

  • 我在启动install Launcher时遇到这个错误。$JAVA_HOME/bin/java-jar rundeck-launcher-2.8.2.jar 线程“main”java.lang.UnsupportedClassVersionError中出现异常:com/dtoLabs/rundeck/expandrunserver:不支持Major.Minor版本52.0 $JAVA_HOME/b

  • 我正在使用Maven覆盖安装部署Jasig CAS4.0.0。我创建了自定义类,当部署它时,在cas.log中出现了以下错误: null maven-compiler-plugin:3.2 maven.compiler.source:1.8 maven.compiler.target:1.8 感谢任何帮助。

  • 图片: 问题可能是什么?

  • 问题内容: 我无法将Java应用程序作为HTML中的Web小程序启动(我使用的是HTML4.01,我知道它在html5中不起作用)。它返回的错误消息是: java:不支持的major.minor版本52.0 我尝试降级Java JRE / JDK / SDK,但仍然收到相同的错误消息。我正在使用的Java当前版本是1.8.0_05。 问题答案: 使用Java版本1.7或更低版​​本执行代码时,您的

  • 我试图运行示例https://github.com/thymeleaf/thymeleafexamples-springmail 有以下错误。不确定什么是不可限量的版本?我附上了pom.xml详细信息。想知道这是不是我的java版本与maven或Tomcat不兼容造成的?