在网上找了一个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();
}
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();
}
没有找到Article.cpm.xml,确认路径对不
改写成 <class name="Article" alias="Article">
试试。
因为 Compass 的 xml 映射我看他的例子硬是没怎么看懂 @_@
另外cp.xml与实体放在同一个目录,希望有所帮助
org/li/compass为你实体的package
另外cp.xml与实体放在同一个目录