2

私は Java を初めて使用し、netBeans で使用したことがありますが、端末からコンパイルまたは実行しようとしたことはありません。だから、私の質問は素朴に見えるかもしれません。私はこの構造のディレクトリを持っています:

Folder X内容: いくつかのファイルと という名前のフォルダーesa-lucene

esa-luceneは、次の 3 つのフォルダを持つディレクトリ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>

libフォルダーとフォルダーも確認しましたがweb/WEB-INF/lib/、必要なすべての外部ライブラリ (jar ファイル) もこのフォルダーに存在します。

解決策を見つけるために検索し、いくつかのことを試しましたが、どれもうまくいきませんでした。それを機能させる方法がわからない!

ところで、どうやら人々は以前にこのパッケージを使用したことがあり、私もダウンロードして使用しましたが、これまでのところ成功していません.

4

2 に答える 2

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.jaredu.wiki.index。

于 2012-09-17T22:11:55.373 に答える
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 に答える