我正在尝试在测试中启动Vaadin 8.9.1
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource(properties = "server.port=8000")
public class StartTest extends AbstractJUnit4SpringContextTests {
...它可以正常启动。但是,当尝试通过http://127.0.0.1:8000/进入应用程序时,我总是得到以下错误:
...
2019-10-30 17:31:13 INFO Vaadin4SpringServlet:85 - Using custom SystemMessagesProvider ch.sofgen.ast.controlpanel.ControlPanelApplication$1@1ee2b6c3
2019-10-30 17:31:13 INFO Vaadin4SpringServlet:105 - Custom Vaadin4Spring servlet initialization completed
Oct 30, 2019 5:31:14 PM org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet [vaadin4SpringServlet] threw exception
java.lang.AssertionError
at com.vaadin.server.VaadinService.loadSession(VaadinService.java:2191)
at com.vaadin.server.VaadinSession.getForSession(VaadinSession.java:436)
at org.vaadin.spring.security.managed.SecurityContextVaadinRequestListener.onRequestStart(SecurityContextVaadinRequestListener.java:56)
at org.vaadin.spring.servlet.Vaadin4SpringServletService.requestStart(Vaadin4SpringServletService.java:65)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1591)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445)
...使用Intellij启动Vaadin或使用Maven works通过Spring Boot启动Vaadin。我用谷歌进行了密集的搜索,并调试了应用程序,但不知道如何解决这个问题。有什么想法吗?谢谢。
发布于 2019-10-31 20:31:36
显然,Vaadin的错误是Java Assert语句忘记删除。只需使用以下命令禁用VaadinSession类的Java断言
SpringBootMainClassName.class.getClassLoader().setClassAssertionStatus(VaadinSession.class.getName(), false);.然后通过run方法直接实例化SpringBootMainClassName,并在从StartTest中删除所有测试注释之后。此外,不要忘记再次使用以下命令清除Java断言状态
SpringBootMainClassName.class.getClassLoader().clearAssertionStatus();在Spring Boot服务器实例化之后。
https://stackoverflow.com/questions/58630083
复制相似问题