Eclipse报错:Setting property 'source' to 'org.eclipse.jst.jee.server:xx' did not find a matching property
Shell代码
- 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:test1' did not find a matching property.
对于这个问题,网上很多人给出的原因和解决方案如下:
解决方法是在Servers视图里双击创建的server,然后在其server的配置界面中选中"Publish module contexts to separate XML files"选项。
不过我按这种方式操作后发现还是会报这个问题,除了这种方式之外网上也没有什么参考资料了,这个问题纠结了我几天。仔细检查工程结构后发现我的工程根目录下生成了一个WebContent文件夹。具体截图如下:
一般来说正常的maven项目的web资源文件都是默认位于src/main/webapp下,WebContent只是普通的Dynamic Web project使用的默认Web文件目录。而我这个工程竟然同时生成了这两个目录,而且两个目录下都有WEB-INF文件夹。这个是不是问题的根源呢?
为了排查,我又重新新建了一个maven web project,工程名为test2。新建完后发现并没有生成WebContent文件夹。我们都知道,Eclipse中建Maven Web工程需要添加Project Facets。具体步骤如下图所示:
1.右键--Properties
2.选择Project Facets,然后点击右边的Convert to faceted from...
3.在弹出的窗口中选择Dynamic Web Module
4.如上图所示在窗口下方还有一个Further configuration available...,点击后弹窗如下,打开完后终于找到了原因所在,在这一步需要设置工程的content directory,如果不设置,目录名称默认就是WebContent。
前一步我是没有设置,所以才会生成默认的WebContent目录。
添加完Facets后,把test2工程部署在tomcat启动,发现之前的错误已经不存在了。
解决完问题后,心里还是有点不踏实,问题的根源到底是什么呢。逐一比对了两个工程的文件内容后终于发现了区别所在。区别在于工程.settings文件夹下。.settings目录下的文件附图如下:
上图高亮的部分的两个文件就是区别所在。
其中.jsdtscope中有一行定义:
- <classpathentry kind="src" path="WebContent"/>
而test2工程的定义如下:
- <classpathentry kind="src" path="src/main/webapp"/>
另外org.eclipse.wst.common.component文件中定义了工程的wb-resource
- <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
test2工程的定义如下:
- <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
综上所述,推测tomcat在部署工程时会去查找.settings中定义的配置。如果配置有问题,则会报错。上面的问题,只要把xx工程.settings目录下对应的两个文件的配置修改后重新部署就能正常启动了。
最新文章
- 修改Capfile,在正式环境不再使用migration修改数据库
- UIStepper UISlider UISwitch UITextField 基本控件
- MBG 相关资源链接
- C# winform项目中ListView控件使用CheckBoxes属性实现单选功能
- 《k8s-1.13版本源码分析》-调度器初始化
- Mysql双主热备+LVS+Keepalived高可用部署实施手册
- cmake: error: symbol(s) not found for architecture x86_64 mac os 使用boost asio
- 今日头条移动app广告激活数据API对接完整Java代码实现供大家参考》》》项目随记
- PowerDesigner逆向生成MYSQL数据库表结构总结
- 查看Linux磁盘空间
- es分词器
- vue中绑定多个class,多个情况使用同一个class时,用js的或 “||”
- BugkuCTF web2
- 002.Git日常基础使用
- C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人
- java hibernate Criteria 删除数据 delete data 2种方法
- mysql 权限管理 针对库 授权 db.*
- 什么是SSH
- 《Python核心编程》第二版第三章答案
- Scrum 项目准备3.0
热门文章
- HDU 4352 XHXJ&;#39;s LIS(数位dp&;amp;状态压缩)
- 使用adb在电脑和手机间传文件
- Lint工具去除Android工程里不再需要的资源
- vim note(5)
- BZOJ 1037: [ZJOI2008]生日聚会Party 四维DP
- fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- Use of implicitly declared global variable
- luogu3899谈笑风生
- JeePlus:代码结构
- bzoj 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏【Floyd】