我为我的文本分析项目运行lucene库(我对java相对较新)。主功能(或命令)有问题。
我使用的lucene版本是3.0.0,已经编译成JAR文件。JAR文件与主类文件Indexer.java位于同一文件夹中。
我首先运行编译代码:
javac -cp \lucene-core-3.0.0.jar Indexer.java
它工作正常,创建了索引器。类文件位于同一目录中。
然后我运行同样的命令:
java -cp \lucene-core.3.0.0.jar Indexer
这次命令行输出说我没有主类Indexer:
could not find or load main class Indexer
我检查了原始的java代码,其中定义了main方法:
import org.apache.lucene.index.*;
import java.io.IOException;
import java.io.File;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.util.Version;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import java.io.FileReader;
public class Indexer {
private IndexWriter writer;
private void indexFile(File f) throws Exception{
System.out.println("Indexing " + f.getCanonicalPath());
Document doc = getDocument(f);
if(doc != null){
writer.addDocument(doc);
}
}
public Indexer(String IndexDir) throws IOException{
Directory dir = FSDirectory.open(new File(IndexDir));
writer = new IndexWriter(dir,new StandardAnalyzer(Version.LUCENE_30),
true,IndexWriter.MaxFieldLength.UNLIMITED);
}
protected Document getDocument(File f) throws Exception{
Document doc = new Document();
doc.add(new Field("contents", new FileReader(f)));
doc.add(new Field("filename",
f.getName(),
Field.Store.YES,
Field.Index.NOT_ANALYZED));
doc.add(new Field("fullpath",
f.getCanonicalPath(),
Field.Store.YES,
Field.Index.NOT_ANALYZED));
return doc;
}
protected boolean acceptFile(File f){
return f.getName().endsWith(".txt");
}
public int index(String dataDir) throws Exception{
File[] files = new File(dataDir).listFiles();
for(int i = 0; i < files.length;i++){
File f = files[i];
if(!f.isDirectory()
&& !f.isHidden()
&& f.exists()
&& f.canRead()
&& acceptFile(f)){
indexFile(f);
}
}
return writer.numDocs();
}
public void close() throws IOException{
writer.close();
}
public static void main(String[] args) throws Exception{
if(args.length != 2){
throw new Exception("Usage: java " + Indexer.class.getName()+" <index dir><data dir");
}
String indexDir = args[0];
String dataDir = args[1];
long start = System.currentTimeMillis();
Indexer indexer = new Indexer(indexDir);
int numIndexed = indexer.index(dataDir);
indexer.close();
long end = System.currentTimeMillis();
System.out.println("Indexing " +
numIndexed + " files took " + (end-start)+ " milliseconds.");
}
}
我的代码/命令有什么问题?
当显式指定一个目录时,jvm不会在运行时类路径中包含当前目录。尝试
java -cp ".:lucene-core.3.0.0.jar" Indexer
我从http://lucene.apache.org/core/下载了代码,但我找不到我需要的代码。我读了以下的参考资料,但他们也没有帮助。 http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/core/src/java/org/apache/lucene/codecs/ http://oak.cs.ucla.edu/cs144/proj
问题内容: 我已经编写了以下Java源文件(): 我将此保存到。 从命令行,我导航到该目录并运行。然后我运行: 然后,从我刚运行过的同一目录运行并获取: 这里发生了什么?!?如何运行正常,但不能运行? 问题答案: 您的课程属于该包。因此,您的课程的全限定名是。在命令行上使用java调用程序时,应提供包含方法的类的标准类名,并省略 .class ,如下所示: Java程序需要此完全限定的类名来了解您
我在安装了OpenJDk 7的Ubuntu 12.04上使用Eclipse 3.7.2 java版本给出 每当我尝试运行项目时,都会收到以下错误。 所有项目都会发生这种情况,我已经在我的 Windows 系统上成功编译了这些项目。而且,当直接从终端使用 javac 和 java 时,它可以工作。有没有简单的解决方案?这是因为OpenJDK吗? 类代码是: 更新:我的源代码在一个名为swingtes
我编写了以下Java源文件(): 我将其保存到。 null 这是怎么回事?!?如何才能使运行良好,而不能使运行良好?
我正在尝试一个简单的教程 将java程序连接到简单的java数据库 使用NetBeans 7 IDE 这是教程的链接。 但当我运行该项目时,NetBeans给了我以下错误: 下面是主类的代码: 欢迎任何人提出建议。
我的gradle身材有问题。我使用Spring网站提出的标准(https://spring.io/guides/gs/rest-service/),但当我尝试使用gradle build时,出现了以下错误: 它对这个毕业生不起作用,但当我用另一个(我在学校的时候用过的)时,它可以完美地工作。