2015-01-24 3 views
0
내가, 내가 이렇게 내 간단한 프로그램을 실행하는 난처한 상황에 빠진하려고 해요

클래스 패스/디버깅 클래스 경로 문제에있는 경우에도 :클래스를 찾을 수 없습니다 예외 항아리는

java -cp ~/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar Test 

을 나는

Exception in thread "main" java.lang.NoClassDefFoundError: purejavahidapi/InputReportListener 
를 얻을 수

은 코드에서 해당 클래스에 처음 액세스하는 지점에 있습니다.

저는 여기와 그 밖의 곳에서 수십개의 답변을 읽었지만 답변을 찾지 못했습니다.

+0

'~'을 사용하지 마십시오. * 그러나 * ... $ HOME을 사용할 수 있습니다 : java -cp $ HOME/FirmwareUpdate/bin : $ HOME/PureJavaHidApi/bin/purejavahidapi.jar : $ HOME/PureJavaHidApi/lib/jna-4.0. 0.jar Test' – FoggyDay

+0

고마워, 그게 옳은데, 나는 완전한 경로를 지정하는 것이 이것과 같은 adhoc 호출에서도 보어이기 때문에 $ HOME을 사용하는 팁을 좋아한다. – nyholku

답변

0

마침내 페니가 떨어졌습니다.

문제는 클래스 경로의 첫 번째 항목을 제외하고는 홈 디렉토리 '~'참조가 작동하지 않아 트랙에서 실제로 나를 벗어났습니다. 첫 번째 항목에 대해 작업했기 때문에 다른 항목에서도 작동 할 것이라고 생각했습니다.

홈 디렉토리 경로 확장이 쉘과 쉘에 의해 행해지 며 (전체적인 클래스 패스 항목이 하나의 인수처럼 보이기 때문에) 확장 문제는 한 번만 발생합니다. 인수의 시작.

#!/bin/bash 
for i; do 
    echo $i 
done 

는 '테스트'로 저장이처럼 내 명령 줄 시도 :

./test -cp ~/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar Test 

출력 :

-cp 
/Users/nyholku/FirmwareUpdate/bin:~/PureJavaHidApi/bin/purejavahidapi.jar:~/PureJavaHidApi/lib/jna-4.0.0.jar 
Test 

나는이 간단한 bash는 스크립트를 작성하여이를 확인

진단을 확인합니다.

+0

클래스 경로를 변수로 내 보낸 다음 export MY_CLASS_PATH = ~/FirmwareUpdate/bin : ~/PureJavaHidApi/bin/purejavahidapi.jar : ~/PureJavaHidApi/lib/jna-4.0.0을 참조 할 수도 있습니다. .jar
java -cp. : $ MY_CLASS_PATH Test' – Arkantos

+0

고마워요. 나는이 일을하는 다른 방법의 대부분을 알고 있습니다. 이것은 필자가 명령 행에서 내 코드를 테스트하는 것을 제 외한 한 라이너 일 뿐이며 작동하지 않을 때 특정 명령 행에서 문제점이 무엇인지 파악할 수 없었습니다 (왜냐하면 내 -cp 및 java를 알고 있다고 생각했기 때문입니다. 물건) 나는 조사하기 시작했다. 그리고 나는 정말로 그것을 알기 위해 오래 걸렸다. 그래서 나는이 특별한 문제를 어디서나 발견 할 수 없었기 때문에 다른 사람들에게 도움이 될 것이라고 생각했습니다. – nyholku

+0

예 나는 당신이 ur 자신의 질문에 대답했을 때, 다른 사람들이 귀하의 링크를 찾는 것이 유용 할 것이라고 생각할 수 있도록 코멘트에 이것을 추가했다는 것을 이해했습니다. :) – Arkantos

관련 문제