在 localhost 启动 App Engine Standard 时遇到问题 - 无法启动
Starting App Engine Standard at localhost has encountered a problem - failed to start
我已经在我的机器上安装了 OpenJDK:java - CLI 的版本产生以下内容:
C:\java -version
openjdk version "13" 2019-09-17
OpenJDK Runtime Environment (build 13+33)
OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)
(我怀疑 openjdk 13 是根本问题,但由于没有明显的方法可以使用较旧的 JDK,例如 8,我希望 Eclipse 和 Google在最新版本的openjdk下会运行。)
我全新安装了 Eclipse IDE Enterprise Java Developers 2020-06 (4.16.0)。
我立即转到 Eclipse Marketplace 并安装了 Google Cloud Tools for Eclipse 1.8.3。我等了几分钟安装完成。
然后我收到通知,提示需要 Google Cloud SDK,安装将立即开始。我等着它完成。
为了验证安装,我创建了一个新的 Google App Engine Standard java 项目,它生成了一个基本的 Hello World 网页和相应的 servlet。我没有更改任何代码、配置或首选项。
我试图通过选择 DEBUG AS > APP ENGINE 来验证功能。
几秒钟后,显示一个错误对话框,指出:
'Starting App Engine Standard at localhost'遇到了问题。
本地主机上的服务器 App Engine Standard 无法启动。
单击“详细信息”按钮会提供相同的信息。
控制台窗格中显示以下内容:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.appengine.tools.development.StreamHandlerFactory (file:/C:/Users/Jeff.Thurston/AppData/Local/google/ct4j-cloud-sdk/LATEST/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/lib/impl/appengine-local-runtime.jar) to method java.net.URL.getURLStreamHandler(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.google.appengine.tools.development.StreamHandlerFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.RuntimeException: Unable to create a DevAppServer
at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:369)
at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:301)
at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:383)
at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:257)
at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:248)
Caused by: java.lang.ExceptionInInitializerError
at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:124)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:354)
... 5 more
Caused by: java.lang.IllegalStateException: java.lang.NoSuchMethodException: java.net.SocksSocketImpl.<init>()
at com.google.appengine.tools.development.DevSocketImplFactory.<clinit>(DevSocketImplFactory.java:76)
... 12 more
Caused by: java.lang.NoSuchMethodException: java.net.SocksSocketImpl.<init>()
at java.base/java.lang.Class.getConstructor0(Class.java:3350)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2554)
at com.google.appengine.tools.development.DevSocketImplFactory.<clinit>(DevSocketImplFactory.java:72)
... 12 more
我找到了这个 to a case similar to yours where it is recommended to migrate from java 8 to java 11 using this documentation,希望对您有所帮助。
App Engine 标准开发服务器仅支持 Java 8。您可以从许多地方下载 Java 8 JRE(或 JDK),例如 AdoptOpenJDK.net , Azul 的 Zulu, 或其他。
安装 Java 8 JRE 后,您需要配置 Eclipse 才能使用此 JRE 启动开发服务器:
- 打开 首选项 > Java > 安装的 JRE。如果找不到您的 Java 8 VM,请选择添加或搜索。
- 打开 首选项 > Java > 已安装的 JRE > 执行环境 和 select
JavaSE-1.8
,并确保你的 Java 8 VM 被选中为默认 VM。
然后您应该能够重新启动您的应用程序,它应该使用新的 JRE。
我已经在我的机器上安装了 OpenJDK:java - CLI 的版本产生以下内容:
C:\java -version
openjdk version "13" 2019-09-17
OpenJDK Runtime Environment (build 13+33)
OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)
(我怀疑 openjdk 13 是根本问题,但由于没有明显的方法可以使用较旧的 JDK,例如 8,我希望 Eclipse 和 Google在最新版本的openjdk下会运行。)
我全新安装了 Eclipse IDE Enterprise Java Developers 2020-06 (4.16.0)。
我立即转到 Eclipse Marketplace 并安装了 Google Cloud Tools for Eclipse 1.8.3。我等了几分钟安装完成。
然后我收到通知,提示需要 Google Cloud SDK,安装将立即开始。我等着它完成。
为了验证安装,我创建了一个新的 Google App Engine Standard java 项目,它生成了一个基本的 Hello World 网页和相应的 servlet。我没有更改任何代码、配置或首选项。
我试图通过选择 DEBUG AS > APP ENGINE 来验证功能。
几秒钟后,显示一个错误对话框,指出:
'Starting App Engine Standard at localhost'遇到了问题。 本地主机上的服务器 App Engine Standard 无法启动。
单击“详细信息”按钮会提供相同的信息。
控制台窗格中显示以下内容:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.google.appengine.tools.development.StreamHandlerFactory (file:/C:/Users/Jeff.Thurston/AppData/Local/google/ct4j-cloud-sdk/LATEST/google-cloud-sdk/platform/google_appengine/google/appengine/tools/java/lib/impl/appengine-local-runtime.jar) to method java.net.URL.getURLStreamHandler(java.lang.String)
WARNING: Please consider reporting this to the maintainers of com.google.appengine.tools.development.StreamHandlerFactory
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
java.lang.RuntimeException: Unable to create a DevAppServer
at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:369)
at com.google.appengine.tools.development.DevAppServerFactory.createDevAppServer(DevAppServerFactory.java:301)
at com.google.appengine.tools.development.DevAppServerMain$StartAction.apply(DevAppServerMain.java:383)
at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:45)
at com.google.appengine.tools.development.DevAppServerMain.run(DevAppServerMain.java:257)
at com.google.appengine.tools.development.DevAppServerMain.main(DevAppServerMain.java:248)
Caused by: java.lang.ExceptionInInitializerError
at com.google.appengine.tools.development.DevAppServerImpl.<init>(DevAppServerImpl.java:124)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
at com.google.appengine.tools.development.DevAppServerFactory.doCreateDevAppServer(DevAppServerFactory.java:354)
... 5 more
Caused by: java.lang.IllegalStateException: java.lang.NoSuchMethodException: java.net.SocksSocketImpl.<init>()
at com.google.appengine.tools.development.DevSocketImplFactory.<clinit>(DevSocketImplFactory.java:76)
... 12 more
Caused by: java.lang.NoSuchMethodException: java.net.SocksSocketImpl.<init>()
at java.base/java.lang.Class.getConstructor0(Class.java:3350)
at java.base/java.lang.Class.getDeclaredConstructor(Class.java:2554)
at com.google.appengine.tools.development.DevSocketImplFactory.<clinit>(DevSocketImplFactory.java:72)
... 12 more
我找到了这个
App Engine 标准开发服务器仅支持 Java 8。您可以从许多地方下载 Java 8 JRE(或 JDK),例如 AdoptOpenJDK.net , Azul 的 Zulu, 或其他。
安装 Java 8 JRE 后,您需要配置 Eclipse 才能使用此 JRE 启动开发服务器:
- 打开 首选项 > Java > 安装的 JRE。如果找不到您的 Java 8 VM,请选择添加或搜索。
- 打开 首选项 > Java > 已安装的 JRE > 执行环境 和 select
JavaSE-1.8
,并确保你的 Java 8 VM 被选中为默认 VM。
然后您应该能够重新启动您的应用程序,它应该使用新的 JRE。