java 无法发布到Tomcat 7服务器NullPointerException

uqjltbpv  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(171)

第一个月
我正在尝试启动本地Tomcat 7服务器,它是为一个我几年没有修改过的旧项目准备的。今天早上我可以启动服务器,然后我做了一些代码更改,需要一个更新版本的共享库,所以我用新版本号更新了相关的POM。我关闭了Tomcat服务器。然后试图重新启动它,但它却陷入了一个永久性的错误

"Could not publish to the server.
java.lang.NullPointerException"

我尝试过的事情:

  • 从服务器添加/删除模块
  • 添加一个不含模块的全新服务器,然后再添加
  • 重新启动Eclipse
  • 清除所有关联项目
  • 更新所有maven依赖项

有什么想法吗?
Workspace > .metadata > .log file中的相关日志条目

!ENTRY org.eclipse.wst.server.core 4 0 2018-02-27 15:30:03.862
!MESSAGE Could not publish to the server.
!STACK 0
java.lang.NullPointerException
    at org.eclipse.wst.common.componentcore.internal.impl.WorkbenchComponentImpl.getFirstTaggedRootSource(WorkbenchComponentImpl.java:234)
    at org.eclipse.wst.common.componentcore.internal.impl.WorkbenchComponentImpl.getDefaultSourceRoot(WorkbenchComponentImpl.java:587)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePaths(VirtualResource.java:133)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingFiles(VirtualFile.java:104)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualFile.getUnderlyingResources(VirtualFile.java:93)
    at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.exists(VirtualResource.java:88)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getNonBinaryComponentManifest(ManifestUtilities.java:124)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifest(ManifestUtilities.java:81)
    at org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities.getManifestClasspath(ManifestUtilities.java:147)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getManifestClasspath(J2EEModuleVirtualComponent.java:248)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.calculateManifestReferences(J2EEModuleVirtualComponent.java:368)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.cacheManifestReferences(J2EEModuleVirtualComponent.java:360)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:176)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:214)
    at org.eclipse.jst.j2ee.componentcore.J2EEModuleVirtualComponent.getReferences(J2EEModuleVirtualComponent.java:207)
    at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.hasConsumableReferences(SingleRootUtil.java:217)
    at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.validateSingleRoot(SingleRootUtil.java:165)
    at org.eclipse.jst.common.internal.modulecore.SingleRootUtil.isSingleRoot(SingleRootUtil.java:93)
    at org.eclipse.jst.common.internal.modulecore.SingleRootExportParticipant.canOptimize(SingleRootExportParticipant.java:88)
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.canOptimize(FlatVirtualComponent.java:203)
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.cacheResources(FlatVirtualComponent.java:185)
    at org.eclipse.wst.common.componentcore.internal.flat.FlatVirtualComponent.fetchResources(FlatVirtualComponent.java:118)
    at org.eclipse.wst.web.internal.deployables.FlatComponentDeployable.members(FlatComponentDeployable.java:227)
    at org.eclipse.jst.j2ee.internal.deployables.J2EEFlexProjDeployable.members(J2EEFlexProjDeployable.java:267)
    at org.eclipse.wst.server.core.internal.ModulePublishInfo.fillCache(ModulePublishInfo.java:314)
    at org.eclipse.wst.server.core.internal.ModulePublishInfo.getDelta(ModulePublishInfo.java:396)
    at org.eclipse.wst.server.core.internal.ServerPublishInfo.getDelta(ServerPublishInfo.java:366)
    at org.eclipse.wst.server.core.internal.Server.getPublishedResourceDelta(Server.java:1575)
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.getPublishedResourceDelta(ServerBehaviourDelegate.java:698)
    at org.eclipse.jst.server.tomcat.core.internal.TomcatServerBehaviour.getPublishedResourceDelta(TomcatServerBehaviour.java:958)
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.computeDelta(ServerBehaviourDelegate.java:874)
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:909)
    at org.eclipse.wst.server.core.model.ServerBehaviourDelegate.publish(ServerBehaviourDelegate.java:774)
    at org.eclipse.wst.server.core.internal.Server.publishImpl(Server.java:3157)
    at org.eclipse.wst.server.core.internal.Server$PublishJob.run(Server.java:345)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
gajydyqb

gajydyqb1#

我无法解释为什么昨天这似乎不起作用,但这解决了我的问题:
1.从备份中恢复eclipse。
1.创建新的工作区。
1.导入现有Maven项目。
1.添加本地嵌入式Tomcat服务器,并将项目设置为该服务器的模块。
1.启动服务器。
我做的唯一一件事与我发布问题时不同的是#1。我不禁想到,无论是工作空间中的还是二进制文件中的一个eclipse组件昨天不知何故被损坏了。

31moq8wy

31moq8wy2#

我将分享我的经验与相同的错误,除了我是启动一个版本9的tomcat已经在版本8工作。
原来我的server.xml配置有问题,虽然配置有错误,但它在Tomcat版本8中工作,而在版本9中不工作,错误是我更改了Engine部分中的defaultHost值,但我没有更改Host部分的名称值,以便两者匹配。apache文档说明如果defaultHost值不匹配,则会出现错误。t匹配同名的主机。同样,在版本8中,错误只是被忽略,但在版本9中我会得到NullPointer异常。我纠正了这个问题,事情又开始工作了。
我会说我做了一些其他的事情,所以我会提到它们,以防它们也很重要。我从eclipse中删除了服务器。我关闭了eclispe。我删除了tmp(?)文件。我重新启动了eclipse,然后添加了tomcatv9.0的服务器定义。然后我可以启动tomcat。我不再收到NullPointer异常。我'我非常肯定这个问题与我的配置问题有关,因为我已经尝试了我提到的所有其他事情,但没有进行配置更改,而且没有工作。
在探讨这个问题时,我注意到其他人提到您应该检查您的配置文件。可能让您措手不及的是,您可能有一个在以前版本中被忽略的错误配置。有人知道您可以使用什么工具来验证您的Tomcat配置吗?这肯定会很有帮助。

相关问题