2012-09-11 1 views
0

Java Vendor 및 버전 정보를 얻고 싶습니다.document.applet.method가 사파리 6 + JDK7 with Mounatin Lion

최근 내가 사파리 6에서 언급 한 것처럼 아래의 HTML 파일을 실행할 때 예외가 발생합니다 (형식 오류 'undefined'는 함수가 아닙니다) Mac Mountain Lion 및 document.MyApplet.getJavaVendor()에 Java 1.7.0.7이 설치되었습니다.

하지만 자바 1.6.0.35에서도 똑같이 작동합니다.

애플릿이로드되지 않을 때까지 위에서 언급 한 예외가 발생하지만 일단 애플릿이로드되면 정보를 예상대로 가져와야합니다.

추가 정보 : 나는 파이어 폭스에서도 동일한 작업을 시도했는데, 거기에는 JRE와 완전히 똑같이 작동합니다.

애플릿 HTML 코드 :

<applet name="MyApplet" codebase = "./code/" archive="MyApplet.jar" code="MyApplet.class" width="1" height="1" style="border-width:0;" MAYSCRIPT=true> 
    <PARAM NAME="type" VALUE="application/x-java-applet;version=1.4"/> 
    <PARAM NAME="cache_option" VALUE="plugin"/> 
    <PARAM NAME="cache_archive" VALUE="MyApplet.jar"/> 
    <PARAM NAME="cache_version" VALUE="5.6.3.1"/> 
    <PARAM NAME="scriptable" VALUE="true"/> 
    <PARAM name="codebase_lookup" value="false"/> 
</applet> 

자바 스크립트 코드 :

function verifyJRE() { 

    try { 
     var tmpVendor = document.MyApplet.getJavaVendor(); 
     var tmpVersion = document.MyApplet.getJavaVersion(); 

     var strJavaVendor = new String(tmpVendor); 
     var strJavaVersion = new String(tmpVersion); 

     if ((strJavaVendor.indexOf("Apple") != -1) || (strJavaVendor.indexOf("Sun") != -1) || (strJavaVendor.indexOf("Oracle") != -1)) { 
      // Do something; 
     } else { 
      // Do Something;     } 
    } catch (e) { 
     iCount++; 
     if (iCount < 10) 
      // waiting for Applet to Load; 
      setTimeout('verifyJRE()', 200); 
     else { 
      // logout from application; 
    } 
} 

애플릿 코드 :

import java.applet.Applet; 
import java.io.PrintStream; 


public class MyApplet extends java.applet.Applet { 

    private String strJavaVendor; 
    private String strJavaVersion; 

    public MyApplet() { 
    }  

    public void init() { 
     strJavaVendor = System.getProperty("java.vendor"); 
     strJavaVersion = System.getProperty("java.version"); 
    } 

    public String getJavaVendor() { 
     System.out.println(new StringBuilder("Java Vendor is: ").append(strJavaVendor).toString()); 
     return strJavaVendor; 
    } 

    public String getJavaVersion() { 
     System.out.println(new StringBuilder("Java Version is: ").append(strJavaVersion).toString()); 
     return strJavaVersion; 
    } 
} 

누군가는이 문제를 좀 도와 주 시겠어요?

+0

Java 버전의 사용자 감지'deployJava.js'가하는 것 이상합니까 무엇입니까? 또한이 애플릿을 배포하는 데 동일한 스크립트를 사용하지 않는 이유는 무엇입니까? –

+0

나는 JRE 버전 인 deployJava.js에서 공급 업체 이름을 얻을 수 없다고 생각합니다. – varuag

+0

''HTML 4.01 이후'applet' 요소가 사용되지 않았을뿐 아니라'param' 요소가 'self-close'가 아니었다. 그것은 대신 '형식이어야합니다. –

답변

0

문제는 애플의 OSX 10.8.2사파리 6.0.1 업데이트로 해결되었다