2013-08-27 4 views
0

여러 다른 jar 파일을 사용하는 애플릿을 JApplet에서 작성했습니다. 나는 메인 클래스를 포함하고 필요한 모든 항아리를 포함하는 항아리에 서명했습니다 (제 생각 엔). 그러나, 내가 무엇을 시도하든간에, 나는 지속적으로 "java.lang.ClassNotFoundException : newposting"을 얻는다. 여기서 'newposting'은 내 서명 된 jar 내의 메인 클래스이다. 나는 이것을 위해 다음 html을 사용하고있다.JApplet이 서명 된 jar에서 ClassNotFoundException을 throw합니다.

<p><applet code="newposting" 
archive="HartfordRowingNewPosting.jar, 
javax.mail.jar, 
jcalendar-1.4.jar, 
junit-4.6.jar, 
jgoodies-common-1.2.0.jar, 
jgoodies-looks-2.4.1.jar, 
mysql-connector-java-5.1.25-bin.jar" 
width="500" height="850"> 
<param name="permissions" value="sandbox" /> 
<param name="codebase" value="HartfordRowingNewPosting.jar" /> 
</applet></p> 

jars와 html은 모두 서버의 같은 폴더에있다. 경로 사양의 여러 조합을 시도했습니다. 또한 jnlp를 사용하여 시도했지만 동일한 오류가 발생합니다. 나는 이것에 대해 지난 한 달 동안 계속해서 좌절감을 느꼈다. 누군가가 이것에 대해 밝힐 수 있습니까?

답변

0

기본 클래스를로드 할 때 ClassNotFoundException이 발생한다는 사실은 클래스를 jar에서 읽을 수 없거나 jar을 찾을 수 없다는 것을 의미합니다.

여러분의 clas가 실제로 항아리에 있는지 확인하시기 바랍니다. 시도하지 않으면. 서명되지 않은 jar를 사용하여 정확히 동일한 오류가 발생했는지 확인하십시오.

그렇다면 여전히 가능성은 2 가지입니다.

클래스가 실제로 newposting이라고 확신합니까? 소문자? 기본 패키지에 있습니까? 참고 : 정규화 된 클래스 이름이어야합니다.

다음으로 jar 파일이 실제로 브라우저에서 사용 가능한지 테스트하십시오. 그렇게하려면 jar 이름을 복사하여 URL 앞에 브라우저에 붙여 넣기 만하면됩니다. 예를 들어 HTML을 http://myhost/myapp/mypage.html에 올리려면 URL http://myhost/myapp/HartfordRowingNewPosting.jar을 입력하십시오.

매개 변수 codebase은 무엇을 의미합니까? 응용 프로그램 수준 매개 변수입니까? 확실하지는 않지만이 브라우저가 브라우저 applet에 의해 지원되는 속성 codebase과 혼동하지 않도록하십시오. 이 속성은 일반적으로 . : <applet codebase="."이며 "현재 디렉토리에서 jar를 다운로드하십시오"를 의미합니다. 이것은 명령 행에서 java를 실행할 때 java -cp .과 같은 것입니다.

사실, 약 10 년 전에 애플릿이 거의 사용되지 않았다는 것을 알고 계십니까? 게다가 내가 볼 수있는 한, MySql JDBC 드라이버가 클래스 경로에 포함되어있다. 일반적으로 클라이언트와 서버간에 JDBC 프로토콜을 허용하지 않는 방화벽이 있기 때문에 대부분의 경우이 기능이 작동하지 않는다는 것을 이해해야합니다.

+0

AlexR ... 팁 주셔서 감사합니다. 나는 최근에 어디에 내 항아리 (들)을 찾고 있었는지 보여주는 자바 콘솔을 따라이 문제를 해결했다. 그 길은 실제로 부정확했다. – rrirower