Eclipse下WildFly 23部署Spring Boot+Vaadin项目报错咨询
问题解决方案
1. 解决Eclipse WildFly插件内部错误
你遇到的Could not initialize class org.wildfly.security.auth.client.DefaultAuthenticationContextProvider报错是Eclipse WildFly工具插件与高版本JDK(你使用的JDK16)的反射访问权限限制冲突导致,按以下步骤修复:
- 关闭Eclipse,找到Eclipse安装目录下的
eclipse.ini配置文件 - 在
-vmargs参数行下方添加两行配置:
--add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED
- 保存文件后重启Eclipse即可消除该类内部错误
2. 解决WFLYDS0011部署扫描错误
该错误是因为你直接将WildFly部署扫描目录指向了项目target根目录,WildFly的部署扫描器只会识别后缀为.ear/.jar/.rar/.sar/.war的文件或目录作为合法部署单元,target根目录下直接暴露的META-INF、WEB-INF文件夹不符合规则。两种修复方案二选一即可:
方案一(推荐):使用标准部署流程
不要手动修改standalone.xml的扫描路径,执行以下操作:
- 执行
mvn clean package命令打包项目,在target目录下会生成spring-boot-test-0.0.1-SNAPSHOT.war包 - 将生成的war包放入WildFly的
standalone/deployments目录,WildFly会自动完成部署 - 也可以直接通过Eclipse的WildFly服务器插件右键添加项目完成自动部署,无需手动操作文件
方案二(自定义扫描目录场景)
如果必须使用自定义扫描目录,你需要将编译后的部署文件放入后缀为.war的文件夹内:
- 在target目录下新建名为
spring-boot-test.war的文件夹 - 将target目录下的
META-INF、WEB-INF以及所有静态资源文件全部移入该.war文件夹 - 将standalone.xml中的扫描路径指向该
.war文件夹即可
3. 修复Spring Boot外部容器部署适配配置
你当前的Spring Boot项目缺少外部容器部署的入口配置,即使完成上述两步也无法正常访问接口,需要修改App.java启动类:
package com.adamkaim.spring; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class App extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(App.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(App.class); } }
修改完成后重新打包部署,将war包重命名为spring-boot-test.war后,即可正常访问http://localhost:8080/spring-boot-test/ui路径。
内容的提问来源于stack exchange,提问作者Adam
相关产品推荐
相关产品推荐

