【问题标题】:Could not determine java version from '17'无法从“17”确定 java 版本
【发布时间】:2021-12-31 05:25:48
【问题描述】:

当我将 Spring 工具套件 4.12.1 中的 Spring Boot 项目设置为 Gradle(STS) 项目时,我收到类似“无法从 '17' 确定 java 版本。但项目使用的是 java 11。Gradle 版本是6.8.3. 我从git成功克隆项目。我的机器已经安装了Java 11。但是不能作为Gradle(STS)导入。谁能帮帮我。我是spring工具套件的新手。

您可以在下面看到我的异常堆栈跟踪。

  java.lang.IllegalArgumentException: Could not determine java version from '17'.
        at org.gradle.api.JavaVersion.toVersion(JavaVersion.java:63)
        at org.gradle.api.JavaVersion.current(JavaVersion.java:72)
        at org.gradle.tooling.internal.consumer.ConnectorServices.assertJava6(ConnectorServices.java:58)
        at org.gradle.tooling.internal.consumer.ConnectorServices.createCancellationTokenSource(ConnectorServices.java:40)
        at org.gradle.tooling.GradleConnector.newCancellationTokenSource(GradleConnector.java:74)
        at org.springsource.ide.eclipse.gradle.ui.util.UIJobUtil$1.<init>(UIJobUtil.java:51)
        at org.springsource.ide.eclipse.gradle.ui.util.UIJobUtil.withProgressDialog(UIJobUtil.java:49)
        at org.springsource.ide.eclipse.gradle.ui.wizards.GradleImportWizardPageOne.populateProjectTree(GradleImportWizardPageOne.java:493)
        at org.springsource.ide.eclipse.gradle.ui.wizards.GradleImportWizardPageOne.access$11(GradleImportWizardPageOne.java:491)
        at org.springsource.ide.eclipse.gradle.ui.wizards.GradleImportWizardPageOne$9.widgetSelected(GradleImportWizardPageOne.java:429)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5884)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1522)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5126)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4576)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
        at org.eclipse.jface.window.Window.open(Window.java:799)
        at org.eclipse.ui.internal.handlers.WizardHandler$Import.executeHandler(WizardHandler.java:153)
        at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:283)
        at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283)
        at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
        at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:317)
        at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:251)
        at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
        at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
        at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
        at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
        at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
        at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:389)
        at org.eclipse.ui.internal.handlers.LegacyHandlerService.executeCommand(LegacyHandlerService.java:366)
        at org.eclipse.ui.internal.views.helpers.EmptyWorkspaceHelper$ImportAction.run(EmptyWorkspaceHelper.java:406)
        at org.eclipse.ui.internal.views.helpers.EmptyWorkspaceHelper$1.linkActivated(EmptyWorkspaceHelper.java:284)
        at org.eclipse.ui.forms.widgets.AbstractHyperlink.handleActivate(AbstractHyperlink.java:215)
        at org.eclipse.ui.forms.widgets.AbstractHyperlink.handleMouseUp(AbstractHyperlink.java:309)
        at org.eclipse.ui.forms.widgets.AbstractHyperlink.lambda$3(AbstractHyperlink.java:117)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
        at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5884)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1522)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5126)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4576)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1041)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
        at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:568)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1440)

这里是错误日志中的会话数据。

eclipse.buildId=4.12.1.202110260750
java.version=17
java.vendor=Eclipse Adoptium
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.springframework.boot.ide.branding.sts4
Command-line arguments:  -data file:/home/niro/Documents/workspace-spring-tool-suite-4-4.12.1.RELEASE/ -os linux -ws gtk -arch x86_64 -product org.springframework.boot.ide.branding.sts4

【问题讨论】:

  • 检查一次 JAVA_HOME 变量路径可能是为 java 17 设置的
  • Jave home 变量路径是 bash: /usr/lib/jvm/java-11-openjdk-amd64: 是一个目录
  • 检查 gradle 文件中的版本。

标签: spring-boot java-11 spring-tool-suite gradle-eclipse


【解决方案1】:

这很可能是由于项目正在使用的 Gradle 版本尚不支持用于运行 IDE 的 JDK。在您的情况下,IDE 似乎在嵌入式 JDK17 上运行,Gradle 可能尚不支持(不确定,但异常看起来像那样)。

您可以通过两种不同的方式解决此问题:

一种解决方案是更新项目中使用的 Gradle 版本。 Gradle 7.3 支持 JKD17 并将您的项目切换到该版本应该允许 IDE 很好地导入它(通常在 gradle-wrapper.properties 文件中)。

另一种解决方案是修改SpringToolSuite4.ini 文件中的-vm 设置,并让它指向来自旧版JDK 的Java 可执行文件(至少是JDK11,但也许您的项目Gradle 版本也适用于JDK16) .更改后,再次打开 IDE 并尝试再次导入您的项目。

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 2022-01-10
    • 2018-05-06
    • 2018-10-05
    • 2021-05-31
    相关资源
    最近更新 更多