bar*_*rry 7 java spring spring-boot payara jakarta-migration
我已经更新了我的项目的库和依赖项,包括:
该应用程序可以成功构建,我尝试将其部署到运行OpenJDK 17的Payara Server 6.2022.2。但是,不断抛出以下错误,并且Spring无法启动。
我已经确认Springboot是最新版本并且支持Java 17环境。是否缺少任何依赖项?
我的 pom.xml :
Run Code Online (Sandbox Code Playgroud)<modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.0.1</version> <relativePath/> </parent> <version>1.0</version> <packaging>war</packaging> <properties> <java.version>17</java.version> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <artifactId>tomcat-embed-logging-juli</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-websocket</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> <exclusion> <artifactId>tomcat-embed-el</artifactId> <groupId>org.apache.tomcat.embed</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-autoconfigure</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-loader</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-resource-server</artifactId> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-oauth2-jose</artifactId> </dependency> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>9.0.0</version> <type>jar</type> </dependency> </dependencies>
模块信息的内容
Run Code Online (Sandbox Code Playgroud)requires jakarta.jakartaee.api; requires spring.beans; requires spring.boot; requires spring.boot.loader; requires spring.boot.autoconfigure; requires spring.context; requires spring.core; requires spring.security.config; requires spring.security.core; requires spring.security.web; requires spring.web;
应用类:
import com.xyz.web.application.resources.env;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
@EnableConfigurationProperties(env.class)
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Run Code Online (Sandbox Code Playgroud)
Payara服务器的日志:
严重:访问大小为 2202 java.lang.UnsupportedOperationException 的 org/springframework/beans/factory/aot/BeanRegistrationsAotContribution$Registration.class 时出现异常:记录需要位于 org.objectweb.asm.ClassVisitor.visitRecordComponent(ClassVisitor.java:305) 处的 ASM8 org.objectweb.asm.ClassReader.readRecordComponent(ClassReader.java:953) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:731) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424)在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336) 在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164) 在 com.sun.enterprise。 v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130) 位于 org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:321) 位于 org.glassfish.hk2.classmodel.reflect.Parser.access$300 (Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280) 在 org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269 )在java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base/java。 util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) 在 java.base/java.lang.Thread.run(Thread.java:833)
严重:访问大小为 3703 的 org/springframework/boot/cloud/CloudPlatform.class 时出现异常 java.lang.UnsupportedOperationException:PermissionSubclasses 需要 ASM9 位于 org.objectweb.asm.ClassVisitor.visitPermissedSubclass(ClassVisitor.java:266) 位于 org.objectweb。 asm.ClassReader.accept(ClassReader.java:706) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424) 在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336 )在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164) 在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130) 在 org.glassfish.hk2。 classmodel.reflect.Parser.doJob(Parser.java:321) 在 org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser$3。在 org.glassfish.hk2.classmodel.reflect.Parser$3 处调用(Parser.java:280)。在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)处调用(Parser.java:269) )在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)在java.base/ java.lang.Thread.run(Thread.java:833)
严重:访问大小为 1750 的 org/springframework/boot/context/config/ConfigDataNotFoundAction.class 时出现异常 java.lang.UnsupportedOperationException:PermissionSubclasses 需要 ASM9 位于 org.objectweb.asm.ClassVisitor.visitPermissionSubclass(ClassVisitor.java:266) 处。 objectweb.asm.ClassReader.accept(ClassReader.java:706) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424) 在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java :336)在com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164)在com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130)在org.glassfish。 hk2.classmodel.reflect.Parser.doJob(Parser.java:321) 在 org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser $3.call(Parser.java:280) 在 org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269) 在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java :264)在java.base / java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base / java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:635)在java。基/java.lang.Thread.run(Thread.java:833)
严重:访问大小为 9179 的 org/springframework/boot/jdbc/DatabaseDriver.class 时出现异常 java.lang.UnsupportedOperationException:PermissionSubclasses 需要 ASM9 位于 org.objectweb.asm.ClassVisitor.visitPermissionSubclass(ClassVisitor.java:266) 处。 asm.ClassReader.accept(ClassReader.java:706) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424) 在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336 )在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164) 在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130) 在 org.glassfish.hk2。 classmodel.reflect.Parser.doJob(Parser.java:321) 在 org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser$3。在 org.glassfish.hk2.classmodel.reflect.Parser$3 处调用(Parser.java:280)。在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)处调用(Parser.java:269) )在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)在java.base/ java.lang.Thread.run(Thread.java:833)
严重:访问大小为 3821 的 org/springframework/boot/convert/DurationStyle.class 时出现异常 java.lang.UnsupportedOperationException:PermissibleSubclasses 需要 org.objectweb.asm.ClassVisitor.visitPermissionSubclass(ClassVisitor.java:266) 处的 ASM9。 asm.ClassReader.accept(ClassReader.java:706) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424) 在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336 )在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164) 在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130) 在 org.glassfish.hk2。 classmodel.reflect.Parser.doJob(Parser.java:321) 在 org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser$3。在 org.glassfish.hk2.classmodel.reflect.Parser$3 处调用(Parser.java:280)。在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)处调用(Parser.java:269) )在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)在java.base/ java.lang.Thread.run(Thread.java:833)
严重:访问大小为 3986 的 org/springframework/boot/convert/PeriodStyle.class 时出现异常 java.lang.UnsupportedOperationException:PermissionSubclasses 需要 ASM9 位于 org.objectweb.asm.ClassVisitor.visitPermissionSubclass(ClassVisitor.java:266) 处。 asm.ClassReader.accept(ClassReader.java:706) 在 org.objectweb.asm.ClassReader.accept(ClassReader.java:424) 在 org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:336 )在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:164) 在 com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:130) 在 org.glassfish.hk2。 classmodel.reflect.Parser.doJob(Parser.java:321) 在 org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44) 在 org.glassfish.hk2.classmodel.reflect.Parser$3。在 org.glassfish.hk2.classmodel.reflect.Parser$3 处调用(Parser.java:280)。在 java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)处调用(Parser.java:269) )在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)在java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)在java.base/ java.lang.Thread.run(Thread.java:833)
我在使用 Gradle 从命令行构建 Spring Boot 3 项目时遇到了类似的情况。对我有用的解决方案是升级 Gradle 版本。我从 7.2 升级到 7.6,解决了 ASM9 问题。
distributionUrl查看以in开头的行gradle-wrapper.properties,位于gradle/wrapper:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2256 次 |
| 最近记录: |