Eclipse Google 云插件无法启动 DevAppServer:InaccessibleObjectException:无法设为静态 java.net.URLStreamHandler

Eclipse Google Cloud plugin Unable to start DevAppServer: InaccessibleObjectException: Unable to make static java.net.URLStreamHandler

尝试使用 Google Cloud Tools for Eclipse 在 Eclipse 中 运行 本地 Google App Engine 运行 进行基本设置,但我保留使用 运行 As -> App Engine 选项启动服务器时出现以下错误。

我相信我的环境很好,因为我能够使用 java_dev_appserver 命令从命令行 运行 使用本地应用程序服务器测试应用程序,所以问题似乎特定于 Eclipse环境。

    at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:383)
    at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:315)
    at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:385)
    at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:59)
    at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:259)
    at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:250)
Caused by: java.lang.ExceptionInInitializerError
    at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:136)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:499)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:480)
    at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:368)
    ... 5 more
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make static java.net.URLStreamHandler java.net.URL.getURLStreamHandler(java.lang.String) accessible: module java.base does not "opens java.net" to unnamed module @49c43f4e
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
    at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
    at java.base/java.lang.reflect.Method.checkCanSetAccessible(Method.java:199)
    at java.base/java.lang.reflect.Method.setAccessible(Method.java:193)
    at com.google.appengine.tools.development.StreamHandlerFactory.<clinit>(StreamHandlerFactory.java:53)
    ... 12 more

我从一台干净的Windows11机器开始,安装了GoogleCloud SDK,添加了app-engine-java组件,配置了一个项目,通过部署到云端进行了测试使用 CLI,安装 Eclipse,添加 Google Tools for Eclipse 插件,使用 Google 插件 Create Project -> Google App Engine Standard 项目创建示例项目,并尝试 运行它。

这可能很简单,但我想不通。

默认情况下随 Eclipse 2021-12 安装的 JRE v17 出现了问题。使用 JRE v11 安装 Eclipse 解决了这个问题。感谢 greg-449 让我走上正轨。

将 JVM 降级到 jdk-11.0.13 也为我解决了这个问题。

因为我没有卸载 JRE v17,所以我不得不更改我的 eclipse.ini 文件以指向 JDK 11,然后更新已安装 JRE 的 Eclipse 工作区设置以包含 JDK 11 并更新我的工作区属性以默认使用该版本而不是 JRE 17。我还将 JDK 合规性设置更新为 JDK 11 而不是 17 并禁用了“发布”设置仍然想使用 17.

感谢 post。几天来我一直在研究这个问题 upgrade/downgrading 库等