Maven 部署后的Vaadin 7问题:NoClassDefFoundError
我在用IntelliJ运行Vaadin 7。我无法开发公司的项目,因为部署后出现了一个问题 IntelliJ中的服务器选项卡表示启动服务器并部署工件是成功的Maven 部署后的Vaadin 7问题:NoClassDefFoundError,maven,intellij-idea,vaadin7,payara,glassfish-4.1,Maven,Intellij Idea,Vaadin7,Payara,Glassfish 4.1,我在用IntelliJ运行Vaadin 7。我无法开发公司的项目,因为部署后出现了一个问题 IntelliJ中的服务器选项卡表示启动服务器并部署工件是成功的 Connected to the target VM, address: '127.0.0.1:9009', transport: 'socket' Connected to server [2020-01-03 01:33:16,250] Artifact CO:war exploded: Artifact is being deploy
Connected to the target VM, address: '127.0.0.1:9009', transport: 'socket'
Connected to server
[2020-01-03 01:33:16,250] Artifact CO:war exploded: Artifact is being deployed, please wait...
[2020-01-03 01:33:18,006] Artifact CO:war exploded: Artifact is deployed successfully
[2020-01-03 01:33:18,006] Artifact CO:war exploded: Deploy took 1,756 milliseconds
然后IntelliJ导航到http://localhost:8080/company 在浏览器上。它显示“HTTP状态404-未找到”错误。控制台显示:
Error in annotation processing: {0}.
java.lang.NoClassDefFoundError: com/vaadin/server/VaadinServlet
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at org.glassfish.web.loader.WebappClassLoader.findClass(WebappClassLoader.java:1089)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1620)
at org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1501)
at com.sun.enterprise.deployment.annotation.impl.ModuleScanner.getElements(ModuleScanner.java:295)
at com.sun.enterprise.deployment.archivist.Archivist.processAnnotations(Archivist.java:592)
at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:461)
at com.sun.enterprise.deployment.archivist.Archivist.readAnnotations(Archivist.java:445)
at com.sun.enterprise.deployment.archivist.Archivist.readRestDeploymentDescriptors(Archivist.java:417)
at com.sun.enterprise.deployment.archivist.Archivist.readDeploymentDescriptors(Archivist.java:394)
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:269)
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:278)
at com.sun.enterprise.deployment.archivist.Archivist.open(Archivist.java:239)
at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:161)
at org.glassfish.javaee.core.deployment.DolProvider.processDOL(DolProvider.java:199)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:223)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:91)
at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:882)
我们公司还没有升级到更高版本的Vaadin,升级Vaadin并不是解决我问题的一个选择。我可以向您展示一些可能很重要的文件摘录,例如pom.xml
资料摘要:
Vaadin 7.7.10
Payara Server 4.1.2.174 on local computer
IntelliJ IDEA 2019.3.1 (Ultimate Edition)
Build #IU-193.5662.53, built on December 18, 2019
Runtime version: 11.0.5+10-b520.17 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
如果您对可能导致此错误的原因有任何想法,请提供建议。我很感谢你的帮助
九个月后,这个问题又在我的电脑上发生了。我的错误消息以开头
Error in annotation processing: {0}.
java.lang.NoClassDefFoundError: com/vaadin/server/VaadinServlet
注意注释处理中的错误error
有一条消息{0}
。错误消息丢失
我在网上看了很多文章。NoClassDefFoundError的潜在原因没有一个适用于我的案例。我的jar文件是在构建之后生成的
上次我通过重新安装Windows解决了这个问题。这次我尝试了一个不太严重的修复,重新安装IntelliJ和Payara服务器。我还删除并重新下载了我公司的GitHub项目完成这些操作后,我的构建再次开始工作。
重新安装IntelliJ就足够了,但我做了所有这些只是为了以防万一,因为我不确定是哪个软件导致了问题
我对此修复不完全满意,因为我仍然不了解问题的原因。您看到了吗?验证您的工件配置以及所需的库是否存在。定义此类的地方必须有
vaadin-server-X.X.X.jar
库。vaadin库是与Payara服务器捆绑在一起的还是属于.war
文件的一部分?能否另外添加您的pom.xml
文件?谢谢您的建议。我将继续研究解决办法。这是我的pom.xml:在我看来,Vaadin库没有与服务器捆绑在一起,但它应该是我的.war
-file文件的一部分当我查看文件夹WEB-INF/lib
中的jar时,我记得我没有在那里看到Vaadin-server-X.X.jar
!不幸的是,许多天的挫折一定让我付出了代价,这个细节从我的脑海中消失了。我匆忙决定重新安装windows。我重新开始了配置过程,遇到了以前从未遇到过的新问题,但我现在仍然在进步。希望我能很快继续工作。谢谢。在发表原始帖子9个月后,问题又开始出现了。在原始帖子中添加了更多信息。