在网上找了一个compass的小例子,运行时总是出错
2010-1-27 12:26:12 org.compass.core.config.CompassConfiguration configure
信息: Configuring from resource [/compass.cfg.xml]
2010-1-27 12:26:12 org.compass.core.config.CompassConfiguration addResource
信息: Mapping resource [Article.cpm.xml] in class loader
2010-1-27 12:26:12 org.compass.core.config.builder.DTDConfigurationBuilder processCompass
信息: Configured Compass [default]
Exception in thread "main" org.compass.core.config.ConfigurationException: No mapping match class [com.dt.Article]
at org.compass.core.config.CompassConfiguration.addClass(CompassConfiguration.java:534)
at com.Test.InsertCompass(Test.java:31)
at com.Test.main(Test.java:25)

感觉是不是哪里没有配置正确啊,希望各位大侠帮帮忙~
compass版本2.2
Article.javapackage com.dt;import java.util.Date;public class Article {  private long id;
 
 private String title;
 
 private String content;
 
 private Date publishDate; public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public long getId() {
return id;
} public void setId(long id) {
this.id = id;
} public Date getPublishDate() {
return publishDate;
} public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
}
}
compass.cfg.xml<!DOCTYPE compass-core-configuration PUBLIC
    "-//Compass/Compass Core Configuration DTD 2.2//EN"
    "http://www.compass-project.org/dtd/compass-core-configuration-2.2.dtd">
<compass-core-configuration>
 <compass>
  <setting name="compass.engine.connection">bin/</setting><!-- 这里配置的是索引的相对路径 -->
  <mapping resource="Article.cpm.xml"/><!-- 这里是每个对象的映射文件 -->
 </compass>
</compass-core-configuration>Article.cpm.xml<!DOCTYPE compass-core-mapping PUBLIC
    "-//Compass/Compass Core Mapping DTD 2.2//EN"
    "http://www.compass-project.org/dtd/compass-core-mapping-2.2.dtd">
    
<compass-core-mapping package="com.dt"> <class name="Article" alias="article">
 
  <!-- 这是必须有的 -->
  <id name="id"/>
  <!-- 你可以通过这个配置来在底层给这个对象加一个Field("type","java") -->
  
  <constant>
   <meta-data>type</meta-data>
   <meta-data-value>java</meta-data-value>
  </constant>
  
  <!-- 配置一下属性 -->
  <property name="title">
   <meta-data>titleIndex</meta-data>
  </property>
  
  <property name="content">
   <meta-data>contentIndex</meta-data>
  </property>
  
  <property name="publishDate">
   <meta-data>publishDateIndex</meta-data>
  </property>
  
 </class>
</compass-core-mapping>测试方法public static void InsertCompass(){

CompassConfiguration comConfig = new CompassConfiguration().configure().addClass(Article.class);

Compass com = comConfig.buildCompass();
  
CompassSession comSession = com.openSession(); CompassTransaction comTx = comSession.beginTransaction(); Article article = new Article();
  
article.setContent("Compass是第一个基于lucene的java开源框架");
  
article.setTitle("学习Compass");
  
article.setPublishDate(new Date());
  
comSession.save(article);
 
comTx.commit();
 }

解决方案 »

  1.   

    No mapping match class [com.dt.Article] 
    没有找到Article.cpm.xml,确认路径对不
      

  2.   

    Article.cpm.xml放在compass.cfg.xml同级别下 <mapping resource="Article.cpm.xml"/> 是应该这样写么?
      

  3.   

    将 <class name="Article" alias="article">
    改写成 <class name="Article" alias="Article">
    试试。
      

  4.   

    对于 Compass 我建议使用 注解的方式来进行配置,然后将需要扫描的路径配置给 Compass (类似Spring),
    因为 Compass 的 xml 映射我看他的例子硬是没怎么看懂 @_@
      

  5.   

    <mapping resource="org/li/compass/Article.cpm.xml"/><!-- 这里是每个对象的映射文件 -->
    另外cp.xml与实体放在同一个目录,希望有所帮助
    org/li/compass为你实体的package
      

  6.   

    <mapping resource="org/li/compass/Article.cpm.xml"/><!-- 这里是每个对象的映射文件 -->
    另外cp.xml与实体放在同一个目录