Eclipse (STS) 在 spring 文件中说 major.minor 52.0 不受支持,但我使用的是 Java 8
Eclipse (STS) says unsupported major.minor 52.0 in spring file, but I'm using Java 8
在我的 applicationContext.xml
文件中我有这个错误
Error occured processing XML 'foo/bar/annotations/SomeAnnotation : Unsupported major.minor version 52.0'. See Error Log for more details
这条线
<context:component-scan base-package="foo.bar" />
我的 STS 设置为使用 Java 1.8 作为默认 JRE,这个项目在其 Java 构建路径上有 1.8 JRE,我的 JAVA_HOME 指向 jdk 1.8,我将 maven-compiler-plugin
设置为使用源和目标 1.8。
spring 插件是否以某种方式使用 1.6?在此之前我使用的是 1.6,是否缺少某些设置?
更新 2: 我忘了 52 意味着它是用 Java 8 编译的,我认为它意味着 7。这解释了为什么我想知道设置了什么6 而不是 7。
更新:这里是错误日志的内容。
!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2015-11-24 15:11:08.176
!MESSAGE Error occured processing '/foo-engine/src/main/resources/applicationContext.xml'
!STACK 0
java.lang.UnsupportedClassVersionError: foo/bar/annotations/SomeAnnotation : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:47)
at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1802)
at org.springframework.asm.ClassReader.accept(ClassReader.java:642)
at org.springframework.asm.ClassReader.accept(ClassReader.java:508)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:279)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:248)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:87)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1428)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1357)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.registerBeanDefinitions(BeansConfig.java:410)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.loadBeanDefinitions(BeansConfig.java:394)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.call(BeansConfig.java:453)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.call(BeansConfig.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
!ENTRY org.springframework.ide.eclipse.core 4 2 2015-11-24 15:11:08.423
!MESSAGE Problems occurred when invoking code from plug-in: "org.springframework.ide.eclipse.core".
!STACK 0
java.lang.UnsupportedClassVersionError:foo/baz/repository/BazRepository : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.ide.eclipse.data.jdt.core.RepositoryInformation.<init>(RepositoryInformation.java:88)
at org.springframework.ide.eclipse.data.internal.validation.InvalidDerivedQueryRule.supports(InvalidDerivedQueryRule.java:71)
at org.springframework.ide.eclipse.data.internal.validation.InvalidDerivedQueryRule.supports(InvalidDerivedQueryRule.java:44)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator$ValidationVisitor.visit(AbstractValidator.java:278)
at org.springframework.ide.eclipse.core.model.AbstractModelElement.accept(AbstractModelElement.java:131)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator.validate(AbstractValidator.java:142)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator.validate(AbstractValidator.java:104)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.execute(SpringProjectContributionManager.java:260)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.run(SpringProjectContributionManager.java:291)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.execute(SpringProjectContributionManager.java:294)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.runValidator(SpringProjectContributionManager.java:257)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.build(SpringProjectContributionManager.java:131)
at org.eclipse.core.internal.events.BuildManager.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:205)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:245)
at org.eclipse.core.internal.events.BuildManager.run(BuildManager.java:300)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:359)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:382)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
请检查您在 eclipse 中安装的 JRE,哪个设置为默认。
看起来您 运行 STS 本身在比 1.8 更旧的 JDK 或 JRE 上。由于引擎盖下的 Spring 支持需要某种 class 加载和 class 分析,因此它不能为您的 Java8 编译 classes 执行此操作项目,如果它本身运行 JDK7 或以前的版本。
首先,任一堆栈跟踪的第一个条目都指向方法 java.lang.ClassLoader.defineClass1
,这是一个调用 JVM 特定 class 加载机制的 native
方法。如果此方法由于不受支持的 class 版本号而失败,则您在无法加载此类 classes 的 JVM 上 运行,并且没有运行时选项可以更改它。
为了验证版本,我从你的堆栈跟踪中选择了以下几行:
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
表示在JRE源码中,ThreadPoolExecutor.java
的第1145行必须在方法runWorker
内部,持有任务run
方法的调用。
检查 6b14, 6b27 and even an earlier version of Java 7 (7-b147) we find the line 1145 being even outside the method runWorker
, but with 7u40-b43 的源代码,我们找到了一个匹配项,第 1145 行在 runWorker
内,并且包含任务的 run()
方法的调用。因此,我们可以得出结论,此代码在 Java 6 下是 而不是 运行,它是 Java 7 实现中的 运行 更新比 7-b147
并且无法加载 Java 8 classes.
作为附加指标,ThreadPoolExecutor.java
的实施在 Java 8 和 the line 1145 doesn’t match the run()
invocation anymore 中再次发生变化。
现在您知道这个失败代码 运行 既不在您的旧 Java 6 上,也不在新安装的 Java 8 上,而是一个 Java 7 实现一定是在你系统的某个地方,你可以搜索它来自哪里以及如何替换它......
正如 Martin 和其他一些人已经诊断出的那样,问题不在于您的工作区 JRE 指向什么,而是您在 Java 7 JVM 上 运行ning STS 本身。由于 STS 为您的项目创建其 'beans model' 的方式,来自项目类路径的 类 正在被 STS 类加载,因此当 运行ning 在 JVM 1.7 上时它不能这样做,如果类 已针对 Java 1.8.
编译
但是,其他答案中 none 提到的是如何确保 STS 运行ning 在您想要的 JVM 上。方法如下:
打开 STS.ini 文件,它应该就在您用来启动 STS 的 STS.exe 旁边。添加(或更改,如果它们已经存在)两行到文件的前面,如下所示:
-vm
...path the javaw.exe of the JVM you want to use...
重要的是这两个参数在不同的行上。
如果您不输入此参数,则 eclipse 启动器将尝试自行查找 JVM,具体的操作方式有点 'dark magic'。因此,如果您需要在特定 VM 上使用 STS 运行,最好在 .ini 文件中明确设置它。
在我的 applicationContext.xml
文件中我有这个错误
Error occured processing XML 'foo/bar/annotations/SomeAnnotation : Unsupported major.minor version 52.0'. See Error Log for more details
这条线
<context:component-scan base-package="foo.bar" />
我的 STS 设置为使用 Java 1.8 作为默认 JRE,这个项目在其 Java 构建路径上有 1.8 JRE,我的 JAVA_HOME 指向 jdk 1.8,我将 maven-compiler-plugin
设置为使用源和目标 1.8。
spring 插件是否以某种方式使用 1.6?在此之前我使用的是 1.6,是否缺少某些设置?
更新 2: 我忘了 52 意味着它是用 Java 8 编译的,我认为它意味着 7。这解释了为什么我想知道设置了什么6 而不是 7。
更新:这里是错误日志的内容。
!ENTRY org.springframework.ide.eclipse.beans.core 1 0 2015-11-24 15:11:08.176
!MESSAGE Error occured processing '/foo-engine/src/main/resources/applicationContext.xml'
!STACK 0
java.lang.UnsupportedClassVersionError: foo/bar/annotations/SomeAnnotation : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.core.type.classreading.RecursiveAnnotationAttributesVisitor.visitEnd(RecursiveAnnotationAttributesVisitor.java:47)
at org.springframework.asm.ClassReader.readAnnotationValues(ClassReader.java:1802)
at org.springframework.asm.ClassReader.accept(ClassReader.java:642)
at org.springframework.asm.ClassReader.accept(ClassReader.java:508)
at org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:64)
at org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:98)
at org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:102)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.findCandidateComponents(ClassPathScanningCandidateComponentProvider.java:279)
at org.springframework.context.annotation.ClassPathBeanDefinitionScanner.doScan(ClassPathBeanDefinitionScanner.java:248)
at org.springframework.context.annotation.ComponentScanBeanDefinitionParser.parse(ComponentScanBeanDefinitionParser.java:87)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.ide.eclipse.beans.core.internal.model.namespaces.DelegatingNamespaceHandlerResolver$ElementTrackingNamespaceHandler.parse(DelegatingNamespaceHandlerResolver.java:177)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1411)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ErrorSuppressingBeanDefinitionParserDelegate.parseCustomElement(BeansConfig.java:1428)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1401)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:168)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig$ToolingFriendlyBeanDefinitionDocumentReader.doRegisterBeanDefinitions(BeansConfig.java:1357)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:94)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:508)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.registerBeanDefinitions(BeansConfig.java:410)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.loadBeanDefinitions(BeansConfig.java:394)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.call(BeansConfig.java:453)
at org.springframework.ide.eclipse.beans.core.internal.model.BeansConfig.call(BeansConfig.java:1)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
!ENTRY org.springframework.ide.eclipse.core 4 2 2015-11-24 15:11:08.423
!MESSAGE Problems occurred when invoking code from plug-in: "org.springframework.ide.eclipse.core".
!STACK 0
java.lang.UnsupportedClassVersionError:foo/baz/repository/BazRepository : Unsupported major.minor version 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
at java.net.URLClassLoader.access0(URLClassLoader.java:71)
at java.net.URLClassLoader.run(URLClassLoader.java:361)
at java.net.URLClassLoader.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:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at org.springframework.ide.eclipse.data.jdt.core.RepositoryInformation.<init>(RepositoryInformation.java:88)
at org.springframework.ide.eclipse.data.internal.validation.InvalidDerivedQueryRule.supports(InvalidDerivedQueryRule.java:71)
at org.springframework.ide.eclipse.data.internal.validation.InvalidDerivedQueryRule.supports(InvalidDerivedQueryRule.java:44)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator$ValidationVisitor.visit(AbstractValidator.java:278)
at org.springframework.ide.eclipse.core.model.AbstractModelElement.accept(AbstractModelElement.java:131)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator.validate(AbstractValidator.java:142)
at org.springframework.ide.eclipse.core.model.validation.AbstractValidator.validate(AbstractValidator.java:104)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.execute(SpringProjectContributionManager.java:260)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.run(SpringProjectContributionManager.java:291)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.execute(SpringProjectContributionManager.java:294)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.runValidator(SpringProjectContributionManager.java:257)
at org.springframework.ide.eclipse.core.internal.project.SpringProjectContributionManager.build(SpringProjectContributionManager.java:131)
at org.eclipse.core.internal.events.BuildManager.run(BuildManager.java:734)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:205)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:245)
at org.eclipse.core.internal.events.BuildManager.run(BuildManager.java:300)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:303)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:359)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:382)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:144)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:235)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
请检查您在 eclipse 中安装的 JRE,哪个设置为默认。
看起来您 运行 STS 本身在比 1.8 更旧的 JDK 或 JRE 上。由于引擎盖下的 Spring 支持需要某种 class 加载和 class 分析,因此它不能为您的 Java8 编译 classes 执行此操作项目,如果它本身运行 JDK7 或以前的版本。
首先,任一堆栈跟踪的第一个条目都指向方法 java.lang.ClassLoader.defineClass1
,这是一个调用 JVM 特定 class 加载机制的 native
方法。如果此方法由于不受支持的 class 版本号而失败,则您在无法加载此类 classes 的 JVM 上 运行,并且没有运行时选项可以更改它。
为了验证版本,我从你的堆栈跟踪中选择了以下几行:
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
表示在JRE源码中,ThreadPoolExecutor.java
的第1145行必须在方法runWorker
内部,持有任务run
方法的调用。
检查 6b14, 6b27 and even an earlier version of Java 7 (7-b147) we find the line 1145 being even outside the method runWorker
, but with 7u40-b43 的源代码,我们找到了一个匹配项,第 1145 行在 runWorker
内,并且包含任务的 run()
方法的调用。因此,我们可以得出结论,此代码在 Java 6 下是 而不是 运行,它是 Java 7 实现中的 运行 更新比 7-b147
并且无法加载 Java 8 classes.
作为附加指标,ThreadPoolExecutor.java
的实施在 Java 8 和 the line 1145 doesn’t match the run()
invocation anymore 中再次发生变化。
现在您知道这个失败代码 运行 既不在您的旧 Java 6 上,也不在新安装的 Java 8 上,而是一个 Java 7 实现一定是在你系统的某个地方,你可以搜索它来自哪里以及如何替换它......
正如 Martin 和其他一些人已经诊断出的那样,问题不在于您的工作区 JRE 指向什么,而是您在 Java 7 JVM 上 运行ning STS 本身。由于 STS 为您的项目创建其 'beans model' 的方式,来自项目类路径的 类 正在被 STS 类加载,因此当 运行ning 在 JVM 1.7 上时它不能这样做,如果类 已针对 Java 1.8.
编译但是,其他答案中 none 提到的是如何确保 STS 运行ning 在您想要的 JVM 上。方法如下:
打开 STS.ini 文件,它应该就在您用来启动 STS 的 STS.exe 旁边。添加(或更改,如果它们已经存在)两行到文件的前面,如下所示:
-vm
...path the javaw.exe of the JVM you want to use...
重要的是这两个参数在不同的行上。
如果您不输入此参数,则 eclipse 启动器将尝试自行查找 JVM,具体的操作方式有点 'dark magic'。因此,如果您需要在特定 VM 上使用 STS 运行,最好在 .ini 文件中明确设置它。