2013-06-26 4 views
1

Java 1.7.25 (보안은 최소로 설정, 32 비트는 중요), Windows 8, Google Chrome을 사용합니다.애플릿이 jar 파일을로드 할 수 없습니다.

일부 이미지를로드해야하는 애플릿을 작성했습니다. 모든 것이 항아리에 포장 및 html 파일은 다음과 같습니다된다

  • Image image = applet.getImage(applet.getCodeBase());
  • Image image = getClass().getResource("relative/package/filename");
  • Image image = getClass().getResource("/absolute/package/filename");
  • Image image = getClass().getResource("filename"); //same package
  • : 나는 이미지는 여러 가지 기술을 사용하여로드하려고

    <html> 
    <body> 
        <applet code="package.AppletRun.class" 
          archive="appletJar.jar" width="1100" height="700"> 
        </applet> 
    </body> 
    </html> 
    

    Image image = someStrangeThingsICantEvenRemeber();

문제는 모든 것이 잘 작동한다는 것입니다. 이미지를로드하지 않도록 설정했지만 이미지를로드하지 않으려면 콘솔에 javaNullPointerException이 표시됩니다. 이클립스에서는 아무런 문제가 없다. 애플릿 뷰어는 불평하지 않는다. jar (클래스 파일과 동일)의 이미지를 내 애플릿에로드하려면 어떻게해야합니까?

applet.getCodeBase() 반환 와 내가 JApplet에 예를 나 자신을 만드는 아니에요 100 % 확신 무엇보다.

답변

2

문제는 코드가 아니라 java (또는 보안 설정)에 있습니다. 사용중인 jar 파일에 자체 서명해야합니다. 브라우저는 더 많은 경고 창을 표시하지만 결국에는 getClass().getResources(...)을 사용하여 파일을로드 (찾기, 액세스) 할 수 있습니다. 이 서명이 어떻게 바뀌 었는지는 모르지만 작동합니다.

+0

당신은) =, 당신이 할 수있는자가 서명 강력한 보안 경고를 생성 애플릿을 애플릿 테스트 목적으로 – earcam

1

항아리가 자체 서명되었거나 공인 된 인증 기관으로 서명되었는지 확인하십시오. 첫째, 자바 애플릿을 배포 소스 코드를 컴파일, JAR 파일로 패키지를하고, JAR 파일에 서명 하기 위해 애플릿

배포

: Oracle Java Applet Tutorial에서

. 인정 된 인증 기관에서 발급 한 인증서로 애플릿에 서명하면 애플릿을 실행하는 것이 안전하다는 보장이 사용자에게 제공됩니다. 테스트를 위해 애플릿을 자체 서명하면 애플릿이 실행될 때 더 강력한 보안 경고가 생성됩니다. 프로덕션의 경우 신뢰할 수있는 인증 기관에서 발급 한 유효한 현재 코드 서명 인증서를 사용하십시오.

항아리에 서명하는 방법을 배우려면 :

http://docs.oracle.com/javase/tutorial/deployment/jar/signing.html

+0

을 "자신의 대답을 받아 들여야한다 실행됩니다. " 강한 보안 경고를하지만 나는 그들을 약화시키고 싶었습니다. –

+1

@ MichałDębski 신뢰할 수없는 구성 요소가 필요없는 응용 프로그램 및 애플릿의 경우 신뢰할 수있는 전용 특성을 사용해야합니다. 경고 대화 상자가 표시되지 않고이 속성을 포함하는 jar 파일을로드하는 응용 프로그램이나 애플릿은 신뢰할 수없는 클래스 나 자원을로드하지 않습니다. 자세한 내용은 다음을 확인하십시오. http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/mixed_code.html –

+0

신뢰할 수있는 기능을 추가하려고 시도했지만 대신 보안 예외가 발생합니다.이미지가 신뢰할 수없는 구성 요소이거나 외부 라이브러리가있는 것 같습니다. Trusted-Libraries를 사용하면 클래스가 예외를 찾을 수 없기 때문입니다. –