2012-09-17 2 views
1

저는 java를 처음 사용하고 netbeans에서 사용했지만 터미널에서 컴파일하거나 실행하려고 시도한 적이 없습니다. 그래서 제 질문은 순진 해 보일 수도 있습니다. 나는이 구조의 디렉토리를 가지고있다 :java.lang.NoClassDefFoundError - 외부 라이브러리를 사용하여 Java 파일 실행

Folder X은 개의 파일과 esa-lucene 폴더를 포함한다.

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

나는이 하위 디렉토리에 존재하는 자바 파일 "ESAWikipediaIndexer.java"를 실행하려합니다 : Folder X

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

I CD를하고

esa-lucene

세 폴더 src, lib, web을 갖는 디렉토리입니다 이것을 사용하십시오 :

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> 

내가뿐만 아니라 libweb/WEB-INF/lib/ 폴더를 확인하고 필요한 모든 외부 라이브러리했습니다 (jar 파일)도이 폴더에 있습니다.

나는 해결책을 찾기 위해 수색을하고 몇 가지 시도를했지만 아무도 효과가 없었습니다. 어떻게 작동하게하는지 아무 단서도 가지지 마라!

사람들은 이전에이 패키지를 사용했고, 방금 사용하기 위해 다운로드했지만 지금까지 성공하지 못했습니다.

+0

시도해 보았습니다 : java -cp esa-lucene.jar :. – scrappedcola

+0

방금 ​​java -cp esa-lucene.jar :를 시도했습니다. edu.wiki.index.ESAWikipediaIndexer 그리고 그것은 나에게 같은 오류를 준다. – Toolsa

+0

http://stackoverflow.com/questions/219585/setting-multiple-jars-in-java-classpath http://stackoverflow.com/questions/9053146/set-folder-for-classpath-in- Java –

답변

0

Eclipse 클래스 경로 및 .project 파일을 참조하는 것처럼 보입니다. 그게 왜 당신이 일식에서 그것을 실행하려고하지 않는 경우가되고.

그러나 여기서는 수동으로 클래스 경로 파일의 classpath 항목을 사용하고 있지 않으므로 사용하지 않습니다. 또한 ESAWikipediaIndexer.java에 대한 .class 파일의 위치를 ​​알려줄 수 있습니다. 아래 명령을 실행하면

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

디렉토리가있는 디렉토리에서 작동해야합니다. 또한 위의 명령에서 esa-lucene.jar의 전체 경로 또는 상대 경로를 제공해야합니다.

+0

클래스 WikipediaAnalyzer 위치 : 클래스 edu.wiki.index.ESAWikipediaIndexer \t 작가 = 새로운 IndexWriter (indexDir, 새로운 WikipediaAnalyzer 기호 기호를 찾을 수 없습니다(), true, IndexWriter.MaxFieldLength.LIMITED); 주 : ESAWikipediaIndexer.java는 사용되지 않는 API를 사용하거나 대체합니다. 참고 : 자세한 내용은 -Xlint : deprecation을 사용하여 다시 컴파일하십시오. – Toolsa

+0

이클립스에 의해 자동으로 생성되는 bin 디렉토리가 있습니까? –

+0

번호. 제가 자세히 다운로드 한 esa-lucene은 여기에서 구할 수 있습니다 : https://github.com/faraday/wikiprep-esa/tree/master/esa-lucene – Toolsa

0

다른 언급했듯이 ESAWikipediaIndexer.class 파일은 java 명령을 실행하는 디렉토리에서 찾을 수있는 esa-lucene.jar 또는 edu/wiki/index 폴더 구조에 있어야합니다. 할 수있는 일이 여기 있습니다. jar 파일을보고 edu/wiki/index 폴더 구조가 있는지 확인하십시오. jar -tvf esa-lucene.jar을 사용하거나 Windows에서 esa-lucene.jar를 esalucene.zip으로 복사 한 다음 두 번 클릭하여 열 수 있습니다. 그것이 ESAWikipediaIndexer.class가 아닌 곳이라면 프로젝트 루트의 빈, 빌드, 클래스 또는 대상 폴더 아래에있을 것입니다. 많은 IDE가 build/classes와 같은 것으로 출력됩니다. 클래스 출력이 있으면 다음과 같이 위의 명령에서 classpath에 build/classes를 추가합니다. java -cp build/classes : esa-lucene.jar edu.wiki.index.ESAWikipediaIndexer for Mac/Linux 또는 java -cp build/classes Windows 용 esa-lucene.jar edu.wiki.index.ESAWikipediaIndexer.

관련 문제