基于Java的Azure函数-异常:ClassCastException:class jdk.internal.loader.ClassLoaders$AppClassLoader无法强制转换

基于Java的Azure函数-异常:ClassCastException:class jdk.internal.loader.ClassLoaders$AppClassLoader无法强制转换,java,azure,visual-studio-code,azure-functions,Java,Azure,Visual Studio Code,Azure Functions,我是Java的新手。我用VisualStudio代码创建了最简单的Http触发Azure函数。代码是模板中的默认代码,未修改。但是当我打电话时出错 有什么问题可以解决 Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample [14.3.2020 11.36.30] Host lock lease acquired by instance ID '00000000000000000000

我是Java的新手。我用VisualStudio代码创建了最简单的Http触发Azure函数。代码是模板中的默认代码,未修改。但是当我打电话时出错

有什么问题可以解决

Http Functions:

    HttpExample: [GET,POST] http://localhost:7071/api/HttpExample

[14.3.2020 11.36.30] Host lock lease acquired by instance ID '0000000000000000000000008457DB20'.
[14.3.2020 11.38.23] Executing HTTP request: {
[14.3.2020 11.38.23]   "requestId": "22ff78da-8114-4dfe-a76e-ad2c3f2d9e99",
[14.3.2020 11.38.23]   "method": "GET",
[14.3.2020 11.38.23]   "uri": "/api/HttpExample"
[14.3.2020 11.38.23] }
[14.3.2020 11.38.23] Executing 'Functions.HttpExample' (Reason='This function was programmatically 
called via the host APIs.', Id=137d2055-2fbf-4eba-bbb7-fe6167aae5db)
[14.3.2020 11.38.23] Executed 'Functions.HttpExample' (Failed, Id=137d2055-2fbf-4eba-bbb7- 
fe6167aae5db)
[14.3.2020 11.38.23] System.Private.CoreLib: Exception while executing function: 
Functions.HttpExample. System.Private.CoreLib: Result: Failure      
Exception: ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be cast 
to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and 
java.net.URLClassLoader are in module java.base of loader 'bootstrap')
Stack: java.lang.ClassCastException: class jdk.internal.loader.ClassLoaders$AppClassLoader cannot be 
cast to class java.net.URLClassLoader (jdk.internal.loader.ClassLoaders$AppClassLoader and 
java.net.URLClassLoader are in module java.base of loader 'bootstrap')
[14.3.2020 11.38.23]    at com.microsoft.azure.functions.worker.reflect.DefaultClassLoaderProvider.addUrlToSystemClassLoader(Default 
   ClassLoaderProvider.java:72)

根据堆栈跟踪中是否存在java.base/jdk.internal.loader.classloader判断,您使用的是java 9或更高版本。Spring Boot的DefaultRestartInitializer正在尝试将应用程序类装入器强制转换为URLClassLoader。这适用于Java8和更早版本,但不适用于Java9或更高版本。SpringBoot在2.0中进行了更新,以应对Java9中的这一变化


如果您想在Java9或更高版本中使用SpringBoot,您应该升级到SpringBoot2。在撰写本文时,最新版本是2.0.5,它支持Java8、9和10。将于今年晚些时候发布的Spring Boot 2.1将增加对Java 11的支持。

您的Java版本是什么?目前Azure功能仅支持Java 8I我从未在我的电脑上安装Spring Boot。它是否附带VS代码?用VS代码获得简单Java代码的最简单方法是什么?有链接吗?我删除了Java11,安装了Java8。现在可以了。