问题描述
我已经在计算机上安装了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下运行。)
我为Enterprise Java Developers 2020-06(4.16.0)重新安装了Eclipse IDE。
我立即前往Eclipse Marketplace,并安装了适用于Eclipse 1.8.3的Google Cloud Tools。我等了几分钟以完成安装。
然后我收到一条通知,指出需要Google Cloud SDK,并且安装将立即开始。我等待完成。
为验证安装,我创建了一个新的Google App Engine标准java项目,该项目生成了一个基本的Hello World网页和相应的servlet。我没有更改任何代码,配置或首选项。
我尝试通过选择DEBUG AS> APP ENGINE来验证功能。
“在本地主机上启动App Engine标准”遇到问题。 本地服务器上的Server 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
解决方法
我发现此answer与您的情况类似,建议您使用此documentation从Java 8迁移到Java 11,希望对您有所帮助。
,App Engine Standard开发服务器仅支持Java8。您可以从AdoptOpenJDK.net,Azul的Zulu或其他地方下载Java 8 JRE(或JDK)。
在安装Java 8 JRE之后,您将需要配置Eclipse以便能够使用此JRE启动开发服务器:
- 打开首选项> Java>已安装的JRE 。如果找不到您的Java 8 VM,请选择添加或搜索。
- 打开首选项> Java>已安装的JRE>执行环境,然后选择
JavaSE-1.8
,并确保将Java 8 VM选中为默认VM。
然后您应该能够重新启动应用程序,该应用程序应使用新的JRE。