将属性'source'设置为'org.eclipse.jst.jee.server:JSFTut'时未找到匹配的属性。

103
我在控制台上运行演示JSF应用程序时遇到以下错误:
[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:JSFTut' did not find a matching property.

可能是重复的问题:在Eclipse中启动Tomcat时出现“SetPropertiesRule”警告消息 - Steve Chambers
8个回答

192
这不是错误,而是一个“警告”。两者之间的区别非常大。这个特定的警告基本上意味着在Tomcat的“server.xml”文件中,“”元素包含一个未知属性“source”,而Tomcat不知道该怎么处理这个属性,因此会忽略它。
Eclipse WTP将自定义属性“source”添加到与项目相关的Tomcat“server.xml”中的“”元素中,以标识上下文的来源(部署到特定服务器的实际工作区中的项目)。这样,Eclipse就可以将部署的Web应用程序与工作区中的项目关联起来。自Tomcat 6.0.16版本以来,在“server.xml”中的任何未指定的XML标签和属性都会在Tomcat启动期间产生警告,即使对于“server.xml”没有DTD或XSD
只需忽略它。您的Web项目没问题。它应该可以正常运行。这个问题与JSF完全无关。

5
您可以将以下内容添加到logging.properties文件中,以在读取配置文件时抑制警告: org.apache.tomcat.util.digester.Digester.level = SEVERE。 - Christian
我注意到,如果你打开了server.xml文件,它不会再添加上下文。我刚刚停止了服务器并关闭了server.xml文件,然后重新添加了项目。我想提一下,以防其他人遇到同样的问题。 - Michael
这个主题实际上提供了一个可行的答案,可以消除警告。 :) - k_rollo
log4j.properties - 1.2.17: log4j.logger.org.apache.tomcat.util.digester.Digester = ERROR - boly38
对我来说,警告是错误的指示 - 我的项目没有被部署。Tomcat 的 server.xml 中的上下文属性是一个提示 - 删除了 Eclipse 生成的属性并从 Eclipse 重新部署后,我又向前迈进了一步 - 现在 Eclipse 显示了一个真正错误的弹窗。 - Hervian

12

从“服务器视图”中删除项目。然后在同一服务器下运行该项目。

问题如@BalusC所说,是由于eclipse中配置的tomcat的server.xml文件损坏。因此,当您执行上述过程时,server.xml将被重新创建。


3
有一天,我的Tomcat实例启动得非常快(不同寻常),查看日志时发现了与帖子作者相同的消息...我尝试清理并重启服务器,但无济于事。像arvindwill建议的那样,将项目从服务器中移除然后重新添加,这个方法很有帮助。 - armyofda12mnkeys

4

我曾经遇到过类似的问题,以下是解决步骤:

  1. 将项目从服务器上删除
  2. 对整个项目进行清理和构建
  3. 删除服务器
  4. 使用“以管理员身份运行”部署并运行该项目

希望这也能解决你的问题。


4
我想补充一点,对于Tomcat 7.x,<Context>不在server.xml中,而在context.xml中。重复移除和添加项目似乎无法解决我的类似问题,这是一个web.xml问题,我通过检查context.xml发现了这行在<Context>部分的代码:

<WatchedResource>WEB-INF/web.xml</WatchedResource>

解决方案让我更接近答案,因为将发布更改到单独的XML中确实解决了上面报告的错误,但不幸的是它生成了第二个错误,我仍在调查。

WARNING: [SetContextPropertiesRule]{Context} 设置属性'source'为'org.eclipse.jst.jee.server:myproject'未找到匹配的属性。


3

关于设置logging.properties值

org.apache.tomcat.util.digester.Digester.level = SEVERE

如果您在eclipse中运行嵌入式tomcat服务器,则默认使用的logging.properties文件是JDK默认的,位于%JAVA_HOME%/jre/lib/logging.properties

如果您想要使用不同的logging.properties文件(例如位于tomcat服务器的conf目录中),则需要通过java.util.logging.config.file系统属性进行设置。例如,要使用文件c:\java\apache-tomcat-7.0.54\conf\eclipse-logging.properties中定义的日志属性,请将其添加到VM参数列表中:

-Djava.util.logging.config.file="c:\java\apache-tomcat-7.0.54\conf\eclipse-logging.properties"

(双击服务器图标,单击“打开启动配置”,选择“参数”选项卡,然后在“VM参数”文本框中输入以下内容)

您可能还会发现添加以下VM参数很有用

-Djava.util.logging.SimpleFormatter.format="%1$tc %4$s %3$s %5$s%n"

这样做将在输出中包括源记录器名称,从而更容易确定在logging.properties文件中要限制哪个记录器(如http://docs.oracle.com/javase/7/docs/api/java/util/logging/SimpleFormatter.html所述)。


2

升级到最新版本

自从这个提交之后,Tomcat的开发版本已经修复了这个问题。现在发布的版本为9.0.13、8.5.35和7.0.92。

从9.0.13的更改日志中可以看到:

忽略由StandardContext提供的Context元素上的名为“source”的属性。这是为了抑制由Eclipse/Tomcat集成(由Eclipse提供)生成的警告。基于mdfst13的补丁。(markt)

7.0.928.5.35的更改日志中也有类似的条目。

这个变化的效果是,在server.xml或context.xml中的Context元素声明source属性时,可以抑制警告。由于这两个位置都是Eclipse放置此类属性的地方,因此可以解决此特定问题。

TL;DR: 升级到Tomcat分支中最新的版本,例如9.0.13或更新版本。


-1
请检查是否缺少任何jar文件,特别是可能已经被本地使用的jar文件,请将其放入lib文件夹中,然后创建WAR文件。

-1

这是解决此警告的简单方法:

您可以更改Eclipse Tomcat服务器配置。打开服务器视图,双击您的服务器以打开服务器配置。 在服务器选项标签中,点击复选框以激活“将模块内容发布到单独的XML文件”。

最后,重新启动服务器,该消息应该消失。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接