어떻게 사용자 프롬프트를 설치하 JRE 는 경우에는 그녀가 그것을 하지 않았나?

StackOverflow https://stackoverflow.com/questions/820439

  •  03-07-2019
  •  | 
  •  

문제

I am writing a Java 애플릿을 알고 가장 좋은 방법을 포함 웹 페이지를 참조하십시오.

나는 그것을 좋아해 사용자 프롬프트를 설치하 JRE 는 경우에는 그녀가 그것을 하지 않았다.이 기능을 사용해서는 안 됩니다(이상적으로)일 크로스 브라우저에서 모든 OS Java 실행됩니다.다른 요구 사항은 애플릿지 않아야에로드 페이지 로딩 후,사용자 행동,로드하지 않는 JVM 모든 페이지에서 로드입니다.나 이것은 공식 일 방법, 하지만 그것은 사용 document.write(), 할 수 있도록 이용 후 페이지 완료했습니다.

도움이 되었습니까?

해결책

애플릿 태그 만 사용하는 것이 좋습니다. Alex B가 언급 한 바와 같이, 대부분의 브라우저는 JRE가없는 경우 사용자에게 해당 시점에서 설치하라는 메시지를 표시합니다.

태양조차도 추천합니다 인트라넷을 제외한 애플릿 태그 사용 인트라넷에 있지 않는 한. 여기서 논리는 내부 서버에서 JRE 다운로드를 호스팅하고 Embed & Object Tags를 사용하여 해당 서버로 다운로드를 지시 할 수 있다고 생각합니다.

나는 Enged & Object 태그를 사용했지만 버전 번호로 인해 번거 로움이 생겼습니다. Java 1.5가 필요하다고 가정 해 봅시다. 따라서 객체 및 임베드 태그에 1.5가없는 경우 사용자가 업그레이드 해야하는지 확인합니다. 그러나 그것은 실제로 원하는 것이 아니며 최신 JVM으로 업그레이드하기를 원합니다. 어쨌든, 내가 마지막으로 놀았을 때 가장 똑똑한 행동이 아니 었습니다. 그들이 지금 개선했을 가능성이 있습니다.

다른 팁

동의 jwls,그것은 더 나은 사용 애플릿 태그에 사용하기 때문에 포함하고 객체에는 매우 가장 쉬운 방법은 당신의 오른쪽 크로스 브라우저는 점에 사용자 정의 설치당 브라우저가 받고 필요합니다.

그러나 사용 애플릿 태그 당신은 조심해야에서 사용자의 Microsoft 의 VM1.1.테스트 때 월에 그들은 여전히 차지 5%의 자바 버전.이러한 경우 사용자가 방문한 페이상 버전이 필요 그들은 끔찍한 회색 영역입니다.

에 대한 솔루션이(토론 후에 java.net 다)사용하는 작은 애플릿을 확인할 수 있는 자바 버전으로 리디렉션을 실패하는 경우 페이지를 대상 버전지 않을 만났다.여기에 내 소스:

JavaRedirectorApplet.java

import java.applet.Applet;
import java.net.URL;

/**
 * Applet built for bytecode 1.1
 * 
 * If applet is less than a set level redirects to a given page, else does nothing
 */
public class JavaRedirectorApplet extends Applet {

    /** The required java version */
    private final static String PARAM_REQUIRED_JAVA_VERSION = "REQUIRED_JAVA_VERSION";

    /** The failure page */
    private final static String PARAM_FAILURE_PAGE = "FAILURE_PAGE";

    /**
     * Initializes the applet
     */
    public void init() {

        // evaluate the required Java version
        double requiredJavaVersion = -1;
        String requiredJavaVersionString = getParameter(PARAM_REQUIRED_JAVA_VERSION);
        if (requiredJavaVersionString != null) {
            try {
                requiredJavaVersion = Double.valueOf(requiredJavaVersionString).doubleValue();
            } catch (Exception e) {
                // ignored, caught below
            }
        }

        if (requiredJavaVersion < 0) {
            System.err.println(PARAM_REQUIRED_JAVA_VERSION + " not set or set incorrectly (must be set to a number greater than 0)");
            return;
        }

        // get the failure page
        URL failurePageURL = null;
        String failurePageString = getParameter(PARAM_FAILURE_PAGE);
        if (failurePageString != null) {
            try {
                failurePageURL = new URL(getCodeBase().getProtocol(),
                                    getCodeBase().getHost(),
                                    getCodeBase().getPort(),
                                    failurePageString);
            } catch (Exception e) {
                // ignored, caught below
            }
        }

        if (failurePageURL == null) {
            System.err.println(PARAM_FAILURE_PAGE + " not set or set incorrectly (must be set to a valid path)");
            return;
        }

        // check to see whether valid
        if (!isValidVersion(requiredJavaVersion)) {

            // not valid redirect self
            getAppletContext().showDocument(failurePageURL, "_self");
        }

        // seems fine
    }

    /**
     * Check the Java version against a required version
     *
     * @param versionRequired
     * @return the verdict
     */
    public static boolean isValidVersion(double versionRequired) {
        try {
            double javaVersion = Double.valueOf(System.getProperty("java.version").substring(0, 3)).doubleValue();

            if (javaVersion < versionRequired) {
                return false;
            } else {
                return true;
            }
        } catch (NumberFormatException e) {
            return false;
        }
    }
}

예 HTML

<!-- place before the actual applet -->
<div style="display: none;">
    <applet code="JavaRedirectorApplet" width="0" height="0">
        <param name="REQUIRED_JAVA_VERSION" value="1.4"/>
        <param name="FAILURE_PAGE" value="/failurePage.html" />
    </applet>
</div>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top