【App Service】部署War包到Azure云上遇404錯(cuò)誤
問(wèn)題描述
使用一個(gè)上傳文件的Java代碼,打包成war包部署到App Service for Windows環(huán)境后,發(fā)現(xiàn)無(wú)法訪問(wèn)。報(bào)錯(cuò)404!

如果在本地啟動(dòng),是正常的。

這是什么原因呢?難道是部署時(shí)出現(xiàn)了錯(cuò)誤?
問(wèn)題解答
按照Azure App Service的部署文檔,直接使用AZ CLI來(lái)部署 war 包 (部署 WAR、JAR 或 EAR 包 : https://docs.azure.cn/zh-cn/app-service/deploy-zip?tabs=cli#-deploy-war-jar-or-ear-packages)
使用 az webapp deploy 命令將 WAR 包部署到 Tomcat 或 JBoss EAP。 為
--src-path指定本地 Java 包的路徑。
az webapp deploy --resource-group <group-name> --name <app-name> --src-path ./<package-name>.war

文件已經(jīng)部署到App Service的wwwroot目錄中,腳本部署顯示也是正常。但是為什么能運(yùn)行呢?
繼續(xù)查看kudu中的logfiles/Application/中查看到日志: contalina 啟動(dòng)失敗,報(bào)錯(cuò) “ Error WARNING: Unknown version string [5.0]. Default version will be used. ”, 非常困惑!
2025-10-26T07:31:43 PID[7732] Error NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
2025-10-26T07:31:43 PID[7732] Error Picked up _JAVA_OPTIONS: -javaagent:'C:\Program Files (x86)\SiteExtensions\JavaApplicationInsightsAgent\3.5.1\java\applicationinsights-agent-codeless.jar'
2025-10-26T07:31:44 PID[7732] Error OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended
2025-10-26T07:32:08 PID[7732] Error Oct 26, 2025 7:32:08 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
2025-10-26T07:32:08 PID[7732] Error WARNING: Problem with directory [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\c8fdd919-ff9e-41d8-ab61-e757726050cd\tomcat\lib], exists: [false], isDirectory: [false], canRead: [false]
2025-10-26T07:32:08 PID[7732] Error Oct 26, 2025 7:32:08 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
2025-10-26T07:32:08 PID[7732] Error WARNING: Problem with directory [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\c8fdd919-ff9e-41d8-ab61-e757726050cd\tomcat\lib], exists: [false], isDirectory: [false], canRead: [false]
2025-10-26T07:32:08 PID[7732] Error Oct 26, 2025 7:32:08 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
2025-10-26T07:32:08 PID[7732] Error WARNING: Problem with directory [C:\home\site\libs], exists: [false], isDirectory: [false], canRead: [false]
2025-10-26T07:32:08 PID[7732] Error Oct 26, 2025 7:32:08 AM org.apache.catalina.startup.ClassLoaderFactory validateFile
2025-10-26T07:32:08 PID[7732] Error WARNING: Problem with directory [C:\home\site\libs], exists: [false], isDirectory: [false], canRead: [false]
2025-10-26T07:32:21 PID[7732] Error Oct 26, 2025 7:32:21 AM org.apache.catalina.startup.HostConfig deployDescriptor
2025-10-26T07:32:21 PID[7732] Error WARNING: The path attribute with value [] in deployment descriptor [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\c8fdd919-ff9e-41d8-ab61-e757726050cd\site\wwwroot\ROOT.xml] has been ignored
2025-10-26T07:32:25 PID[7732] Error Oct 26, 2025 7:32:25 AM org.apache.tomcat.util.descriptor.web.WebXml setVersion
2025-10-26T07:32:25 PID[7732] Error WARNING: Unknown version string [5.0]. Default version will be used.
根據(jù)version上猜測(cè),可能與Java 或 Tomcat的版本相關(guān)。 于是修改Tomcat的版本到10.0 之后,再次查看日志,就會(huì)發(fā)現(xiàn)更加詳細(xì)的版本沖突的錯(cuò)誤信息:java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0 (unable to load class [org.springframework.web.SpringServletContainerInitializer])
2025-10-26T07:40:44 PID[6224] Error NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.base/java.util.concurrent=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED 2025-10-26T07:40:44 PID[6224] Error Picked up _JAVA_OPTIONS: -javaagent:'C:\Program Files (x86)\SiteExtensions\JavaApplicationInsightsAgent\3.5.1\java\applicationinsights-agent-codeless.jar' 2025-10-26T07:40:46 PID[6224] Error OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-10-26T07:41:15 PID[6224] Error Oct 26, 2025 7:41:15 AM org.apache.catalina.startup.ClassLoaderFactory validateFile 2025-10-26T07:41:15 PID[6224] Error WARNING: Problem with directory [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\147da13b-a28f-4b35-a90a-3800a3cae95b\tomcat\lib], exists: [false], isDirectory: [false], canRead: [false] 2025-10-26T07:41:15 PID[6224] Error Oct 26, 2025 7:41:15 AM org.apache.catalina.startup.ClassLoaderFactory validateFile 2025-10-26T07:41:15 PID[6224] Error WARNING: Problem with directory [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\147da13b-a28f-4b35-a90a-3800a3cae95b\tomcat\lib], exists: [false], isDirectory: [false], canRead: [false] 2025-10-26T07:41:16 PID[6224] Error Oct 26, 2025 7:41:16 AM org.apache.catalina.startup.ClassLoaderFactory validateFile 2025-10-26T07:41:16 PID[6224] Error WARNING: Problem with directory [C:\home\site\libs], exists: [false], isDirectory: [false], canRead: [false] 2025-10-26T07:41:16 PID[6224] Error Oct 26, 2025 7:41:16 AM org.apache.catalina.startup.ClassLoaderFactory validateFile 2025-10-26T07:41:16 PID[6224] Error WARNING: Problem with directory [C:\home\site\libs], exists: [false], isDirectory: [false], canRead: [false] 2025-10-26T07:41:32 PID[6224] Error Oct 26, 2025 7:41:32 AM org.apache.catalina.startup.HostConfig deployDescriptor 2025-10-26T07:41:32 PID[6224] Error WARNING: The path attribute with value [] in deployment descriptor [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\147da13b-a28f-4b35-a90a-3800a3cae95b\site\wwwroot\ROOT.xml] has been ignored 2025-10-26T07:41:39 PID[6224] Error Oct 26, 2025 7:41:39 AM org.apache.catalina.startup.HostConfig deployDescriptor 2025-10-26T07:41:39 PID[6224] Error SEVERE: Error deploying deployment descriptor [D:\DWASFiles\Sites\lbwartest02\Temp\JavaFiles\147da13b-a28f-4b35-a90a-3800a3cae95b\site\wwwroot\ROOT.xml] 2025-10-26T07:41:39 PID[6224] Error java.lang.IllegalStateException: Error starting child 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:693) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1979) 2025-10-26T07:41:39 PID[6224] Error at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) 2025-10-26T07:41:39 PID[6224] Error at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2025-10-26T07:41:39 PID[6224] Error at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 2025-10-26T07:41:39 PID[6224] Error at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:586) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:476) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1708) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:320) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) 2025-10-26T07:41:39 PID[6224] Error at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) 2025-10-26T07:41:40 PID[6224] Error at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) 2025-10-26T07:41:40 PID[6224] Error at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) 2025-10-26T07:41:40 PID[6224] Error at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:265) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.startup.Catalina.start(Catalina.java:795) 2025-10-26T07:41:40 PID[6224] Error at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 2025-10-26T07:41:40 PID[6224] Error at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 2025-10-26T07:41:40 PID[6224] Error at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 2025-10-26T07:41:40 PID[6224] Error at java.base/java.lang.reflect.Method.invoke(Method.java:566) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) 2025-10-26T07:41:40 PID[6224] Error Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726) 2025-10-26T07:41:40 PID[6224] Error ... 37 more 2025-10-26T07:41:40 PID[6224] Error Caused by: java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0 (unable to load class [org.springframework.web.SpringServletContainerInitializer]) 2025-10-26T07:41:40 PID[6224] Error at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2515) 2025-10-26T07:41:41 PID[6224] Error at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:877) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1413) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257) 2025-10-26T07:41:42 PID[6224] Error at java.base/java.lang.Class.forName0(Native Method) 2025-10-26T07:41:42 PID[6224] Error at java.base/java.lang.Class.forName(Class.java:398) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:226) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:197) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1840) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1298) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:986) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:303) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5085) 2025-10-26T07:41:42 PID[6224] Error at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) 2025-10-26T07:41:42 PID[6224] Error ... 38 more 2025-10-26T07:41:42 PID[6224] Error
所以,根據(jù)以上錯(cuò)誤 Java Runtime (class file version 61.0) 表示這是 Java 17 編譯出來(lái)的類(lèi)文件版本,而當(dāng)前 JVM 只支持到 55.0,這是 Java 11 的類(lèi)文件版本。 所以需要升級(jí)的是Java 的版本,而非 Tomcat 版本。
于是,把Java 版本調(diào)整到 17 后,再次訪問(wèn)接口。終于,成功了!!!
因?yàn)镴ava版本的問(wèn)題導(dǎo)致訪問(wèn)404,從Java 11 + Tomcat 9.0 到 Java 11 + Tomcat 10.0 最后到 Java 17 + Tomcat 10.0。

接口訪問(wèn)效果展示:

參考資料
部署 WAR、JAR 或 EAR 包 :https://docs.azure.cn/zh-cn/app-service/deploy-zip?tabs=cli#-deploy-war-jar-or-ear-packages
PS: 如果向調(diào)用 wardeploy接口,可參考:
curl -X POST -u waruser:Pwd --data-binary @"demo.war" https://xxxxxx.scm.chinacloudsites.cn/api/wardeploy
當(dāng)在復(fù)雜的環(huán)境中面臨問(wèn)題,格物之道需:濁而靜之徐清,安以動(dòng)之徐生。 云中,恰是如此!

浙公網(wǎng)安備 33010602011771號(hào)