2

我是 java 新手,曾在 netBeans 中使用过它,但从未尝试从终端编译或运行它。所以,我的问题可能看起来很幼稚。我有一个这种结构的目录:

Folder X包含:几个文件和一个名为esa-lucene.

esa-lucene是一个包含三个文件夹的目录src, lib, web

.classpath, lib, .project, .settings, src, web

我正在尝试运行ESAWikipediaIndexer.java此子目录中存在的 java 文件“”:

X/esa-lucene/src/edu/wiki/index/ESAWikipediaIndexer.java

我 cd 进入Folder X并使用它:

java -cp esa-lucene.jar edu.wiki.index.ESAWikipediaIndexer

但它给了我这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: edu/wiki/index/ESAWikipediaIndexer
Caused by: java.lang.ClassNotFoundException: edu.wiki.index.ESAWikipediaIndexer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: edu.wiki.index.ESAWikipediaIndexer. Program will exit.

我还检查了 .classpath 它包含:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="lib/servlet-api.jar"/>
    <classpathentry kind="lib" path="web/WEB-INF/lib/lucene-analyzers-3.0.0.jar"/>
    <classpathentry kind="lib" path="web/WEB-INF/lib/lucene-core-3.0.0.jar"/>
    <classpathentry kind="lib" path="web/WEB-INF/lib/mysql-connector-java-5.1.12-bin.jar"/>
    <classpathentry kind="lib" path="web/WEB-INF/lib/trove-2.1.0.jar"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

我也检查了libandweb/WEB-INF/lib/文件夹,所有必需的外部库(jar 文件)也存在于这个文件夹中。

我搜索以找到任何解决方案并尝试了几件事,但都没有奏效。不知道如何使它工作!

顺便说一句,显然人们以前使用过这个包,我也刚刚下载使用它,但到目前为止还没有成功。

4

2 回答 2

0

看起来您指的是 Eclipse 类路径和 .project 文件。既然如此,为什么不尝试在 Eclipse 中运行它。

但是,由于您在此处手动运行它,因此未使用类路径文件中的类路径条目。您还可以告诉我们 ESAWikipediaIndexer.java 的 .class 文件在哪里。如果您运行以下命令

java -cp */esa-lucene.jar edu.wiki.index.ESAWikipediaIndexer

从它所在的目录,它应该可以工作。您还需要在上述命令中提供 esa-lucene.jar 的完整路径或相对路径。

于 2012-09-17T21:59:21.893 回答
0

正如其他人所提到的,您需要确保 ESAWikipediaIndexer.class 文件位于 esa-lucene.jar 中或位于运行 java 命令的目录中的 edu/wiki/index 文件夹结构中。这是你可以做的。查看 jar 文件以确保其中存在 edu/wiki/index 文件夹结构。您可以使用 jar -tvf esa-lucene.jar 或者如果您在 Windows 上,则将 esa-lucene.jar 复制到 esa-lucene.zip 并双击打开它。如果那不是您的 ESAWikipediaIndexer.class 所在的位置,那么它可能位于项目根目录的 bin、build、classes 或 target 文件夹下。许多 IDE 输出到诸如构建/类之类的东西。如果存在类输出,则在上述命令中将构建/类添加到类路径中,例如:java -cp build/classes:esa-lucene.jar edu.wiki.index。

于 2012-09-17T22:11:55.373 回答