2013-04-23 9 views
-1

나는 이클립스에서 일하고 있으며 외부 라이브러리를 사용할 필요가있다. 예를 들어 Jsoup와 JXL.java.lang.NoClassDefFoundError. 런타임 중에 클래스를 찾을 수 없습니다.

지금까지 내가 한 것은 : 프로젝트 폴더에 "lib"폴더가 처음 만들어졌습니다. 나중에 이클립스에서 프로젝트 속성, 라이브러리 탭을 클릭하고 외부 jar를 추가 한 다음 jar를 lib 폴더에 추가합니다.

이렇게하면 컴파일 문제가 해결됩니다. 나는이 프로그램을 실행하면 이제 (나는/빈 프로젝트로 이동하고 콘솔에서 실행 : 자바 programName을을, Main.java이고 어디 시험에 지금

java.lang.NoClassDefFoundError: 

을 얻을, 나는 폴더에 jar 파일을 추가 나는 어디에 해당 라이브러리를 찾을 자바 말할 필요가 있음을 마음에 오는

javac -classpath ./path/to/jar Main.java 
java -classpath ./path/to/jar:. Main 

그리고이 작품을

그래서 첫 번째 일이된다. 지금, 나는이 다음을 수행 프로그램을 실행 할 수 있었다 . 이것이 맞으면 어떻게합니까?

java -cp ???(dont know what to put here) 

그러나 또한. 나는 또 다른 문제가있다. 나는이 프로그램을 컴퓨터에 쓴다. 그러나 다른 프로그램에서이 라이브러리를 사용하지 않을 것이다. 이 문제를 어떻게 해결합니까?

+0

이미 비슷한 질문을받습니다. 여기에 언급 한 것처럼 앱 서버의 클래스 경로에 라이브러리를 놓으려고 했습니까? http://stackoverflow.com/a/16149435/1430055? –

+0

그리고 jar 파일을 다른 컴퓨터에 복사하지 않고 다른 컴퓨터에없는 다른 라이브러리 클래스의 메서드를 어떻게 호출해야합니까? –

답변

0

나는 다음과 같이 뭔가를 사용하려면 : 이것은 내 클래스 패스에 항아리하지만 lib 디렉토리에있는 사람들뿐만 아니라 추가

java -cp myjar.jar;lib/*.jar com.foo.bar.MyClass

.

다른 컴퓨터에서 jar 파일을 실행하려면 에 jar 파일이 있어야합니다. jar 파일 만 있으면됩니다. 왜 lib 디렉토리도 같이 패키징하지 않는 것이 좋을까요?

+0

이것은 매우 어리석은 일이지만 -cp 명령을 사용하는 데 문제가 있습니다. 나는 네 명령을 사용했다. 그러나 그것은 나에게 오류를 던졌다. 그것은 허락을 거부했다. – Alessandroempire

0

당신이 당신의 응용 프로그램 (jsoup.jar 같은) 종속되는 JAR 파일에 대한

  1. 경로를 걱정하는 두 개의 경로가 실행하는 프로그램을 얻으려면
  2. (이 LIB를 호출 할 수 있습니다)

    java -cp lib/jsoup.jar:classes Main 
    
    0 : 앱 클래스를 포함하는 디렉토리에 대한 경로는

당신이 필요로하는 명령의 일반적인 형태입니다 (이 클래스를 호출 할 수 있습니다)

더 libs와

java -cp lib/jsoup.jar:lib/jxl.jar:classes Main 

다른 컴퓨터에 출시하여 응용 프로그램을 포장에 일반적으로 메모를하는 경우. http://ant.apache.org/manual/Tasks/jar.html

또 다른 옵션은 하나의 큰 항아리를 만드는 것입니다. 하나의 큰 항아리를 만들고, 필요한 모든 클래스를 라이브러리와 라이브러리에서 번들링하는 것입니다. 앱의 모든 수업. 그런 다음 상자 솔루션을 사용하여 jar를 실행 가능하게 만들 수 있습니다.코드 폴더에서 다음

project folder 
... code 
... libs 

:이 구조가있는 경우 http://one-jar.sourceforge.net/

+0

내가해야 할 일은 그것을 실행할 수있는 것이다. 나는 java -cp – Alessandroempire

+0

을 사용하는 데 어려움을 겪고 있는데 사용중인 정확한 명령 줄을 붙여 넣을 수 있습니까? –

+0

java -cp ../lib/jxl-2.6.jar:classes Main하지만 오류가 있습니다 : 메인 클래스를 찾거나로드 할 수 없습니다. 메인 – Alessandroempire

0

https://code.google.com/p/jarjar/에서보세요

javac -cp .;../libs/*.jar yourmainclass.java 
java -cp .;../libs/*.jar yourmainclass 

컴파일하고이 프로젝트를 실행하는 데 필요한 걸릴을 모든 폴더에 저장하고 다른 컴퓨터에서도 동일한 작업을 수행하십시오.

+0

Ok 코드 폴더에 있고 당신이 작성한 것을 실행했지만 에러가납니다. 아주 이상한. 여기에 게시하고 싶습니까? ALC @ 알레산드로 : ~/자바/Trabajo/src에 $의 javac의의 -cp; ../ lib 디렉토리/* 항아리 Main.java javac의 : – Alessandroempire

+0

이것은 내가 무엇을 얻을하지 않습니다.. 어떤 소스 파일 사용법 : javac의 <소스 파일> 가능한 옵션 목록을 보려면 -help를 사용하십시오. bash : ../lib/jxl-2.6.jar : 사용 권한이 거부되었습니다. – Alessandroempire

관련 문제