直接在Eclipse中复制粘贴动态网站项目(Web Dynamic Project)后,另存的新项目在服务器运行(Run on Server)时会报错,提示Context重复了:
图1 直接运行复制后的项目会报错
网上查了一下相关资料,有一种办法是直接修改server.xml配置文件,将重复的<Context>节点中的名称和路径改为新项目对应的值。虽然修改后可以直接运行,但Servers选项卡中的新项目名会多一个括号,显然这种修改方式不彻底:
图2 Servers选项卡显示名称仍有问题
再次上网查资料,经测试,只需改动一个文件就行了。打开报错工程的.settings文件夹,找到一个名为org.eclipse.wst.common.component的文件,在Eclipse中打开:
图3 在Eclipse中打开component文件
然后替换掉所有的原工程名相关内容:
图4 修改后的component文件
最后,保存设置、刷新项目、删除Servers选项卡中的问题工程,重新运行,报错消除,且显示正常:
图5 重新在服务器上运行,一切正常
经验小结:
org.eclipse.wst.common.component文件规定了项目怎么组装成一个webapp,一般不直接复制。当Eclipse中直接复制粘贴原项目后,会把之前的component文件也被原样保留下来。但新项目对应的deploy-name、一些属性的value值等都发生了变化,必须手动更新这些与项目名称相关的信息,才能避免运行时与原项目重复、显示名称异常等问题。