Как определить установленную на клиенте среду выполнения Java с веб-сайта ASP .NET?

У меня есть сайт ASP .NET, на котором размещен апплет Java. Апплет Java требует версии 1.6 Обновление 11 среды выполнения Java.

Как я могу определить, что на клиенте установлена ​​соответствующая среда выполнения, чтобы я мог отображать информативное сообщение, если это не так?

Спасибо,

Карл.

РЕДАКТИРОВАТЬ: решение должно быть независимым от платформы.

12 ответов

Решение

На этой странице описывается, как и перечислены некоторые плагины, которые позволят вам обнаруживать Java с помощью JavaScript: http://www.pinlady.net/PluginDetect/JavaDetect.htm

Кроме этого, попробуйте также этот фрагмент:

if (navigator.javaEnabled()) {
    //Java is enabled
}

Ссылка ниже содержит подробную информацию о советах по развертыванию Java-приложений.

http://java.sun.com/javase/6/docs/technotes/guides/jweb/deployment_advice.html

Цитирование по ссылке

Deployment Toolkit Чтобы избежать проблем совместимости браузера, Deployment Toolkit ( deployJava.js) предоставляет функции JavaScript, которые автоматически генерируют HTML, необходимый для развертывания апплетов и приложений Java Web Start. Разработчики должны вызывать эти функции для последовательного развертывания своих решений в различных браузерах.

Мой подход заключается в использовании JavaScript navigator.javaEnabled() чтобы проверить, доступна ли какая- либо версия Java.

Тогда вы можете использовать System.getProperty("java.version") из самого Java-апплета. Этого должно быть достаточно, чтобы получить информацию о версии, такую ​​как 1.6.0_03,

Хотя большинство ответов до сих пор касаются обнаружения на самом пользовательском агенте (браузере), из вашего упоминания ASP.NET похоже, что вы хотели бы, чтобы это обнаружение происходило на стороне сервера. Если это так, у вас есть несколько вариантов.

Сначала вы можете прослушать заголовки HTTP-запросов, поступающие от пользовательского агента. Компьютер и браузер с установленной Java, как правило, содержат заголовок, предоставляющий подсказку об этом серверу, который вы можете использовать. Вот несколько полезных ссылок об этом подходе: http://www.developershome.com/wap/detection/ https://metacpan.org/pod/HTTP::Browscap

Другой вариант, который у вас есть, - отправить javascript пользовательскому агенту для выполнения обнаружения, используя один из приемов в других ответах на этот вопрос, а затем использовать обратные вызовы ajax, чтобы сообщить серверу, что вы обнаружили.

Если вы не возражаете против использования базового Java-апплета, для запуска которого требуется гораздо более старая версия, вы можете использовать эту статью и продолжить на основе этого результата.

Если решение должно быть независимым от платформы. Я исключу все решения, предоставленные javascript.

Вы можете написать очень простой апплет, который поддерживает старая классическая виртуальная машина. Позвольте апплету определить версию JRE и отобразить сообщение.

Если вы принимаете Javascript, вас также может заинтересовать эта статья, посвященная автоматической установке приложений WebStart.

Ссылка ниже была способом, которым я заставил это работать. У него есть JS, который вы можете получить, который был сделан для развертывания Java. Ссылка была упомянута выше, но я подумал, что пример с ней будет хорош.

Это образцы, которые мне понадобились, чтобы решить мою проблему.

http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/technotes/guides/jweb/deployment_advice.html

Как только вы загрузили файл deployJava.js, вы можете добавить что-то, чтобы убедиться, что java установлен: if (deployJava.getJREs().length > 0) { //Your code to start java }

Убедитесь, что установлена ​​конкретная версия: if (deployJava.versionCheck(version)) { //Your version specific code }

Запустите установщик последней версии Java: deployJava.installLatestJava();

Или конкретную версию, если вы хотите: deployJava.installJRE(version);

  1. Используйте функцию deployJava.js getJREs() для создания динамической страницы в зависимости от версии Java пользователя.

  2. Используйте http://cowwoc.blogspot.com/2008/12/tracking-java-versions-using-google.html для отслеживания версии Java, используемой вашими веб-посетителями с помощью Google Analytics.

  3. Бонусный шаг: используйте исходный код из шага 2 в качестве примера того, как шаг 1 должен быть реализован.

Может быть, этот скрипт поможет. Это только для Windows, хотя.

<script language='javascript' type='text/javascript'>
var javaVersion;
var shell;
try 
{
    // Create WSH(WindowsScriptHost) shell, available on Windows only
    shell = new ActiveXObject("WScript.Shell");

    if (shell != null) 
    {
        // Read JRE version from Window Registry
        try 
        {
            javaVersion = shell.regRead("HKEY_LOCAL_MACHINE\\Software\\JavaSoft\\Java Runtime Environment\\");
        } 
        catch(e) 
        {
            // handle exceptions raised by 'shell.regRead(...)' here
            // so that the outer try-catch block would receive only
            // exceptions raised by 'shell = new ActiveXObject(...)'
            alert('error reading registry');
        }
    } 
} 
catch(e) 
{
    // Creating ActiveX controls thru script is disabled 
    // in InternetExplorer security options 

    // To enable it: 
    // a. Go to the 'Tools --> Internet Options' menu
    // b. Select the 'Security' tab
    // c. Select zone (Internet/Intranet)
    // d. Click the 'Custom Level..' button which will display the
    // 'Security Settings' window.
    // e. Enable the option 'Initialize and script ActiveX controls
    // not marked as safe'

    activeXDisabled = true;
} 

// Check whether we got required (1.6) Java Plugin
if ( javaVersion != null && javaVersion.indexOf("1.6")) 
{
    pluginDetected = true;
    alert('it is installed!')
}

if (pluginDetected) 
{
    // show applet page
} 
else if (confirm("Java Plugin 1.6 not found")) 
{
    // show install page
    alert('not found')
} 
else 
{
    // show error page
    alet('error')
}
</script>

Просто скопируйте и вставьте этот код в адресную строку браузера! Проверьте, полезно ли это для вас.

javascript: for(i = 0; i < navigator.plugins.length; i++) alert(navigator.plugins[i].name);

Вам нужно получить положение Java в массиве плагинов и, возможно, вы можете проверить версии с помощью регулярного выражения или чего-то еще. Вы можете взглянуть на плагин javascript объект.

С уважением!

Скопируйте и вставьте в адресную строку браузера, чтобы проверить:

JavaScript: предупреждение (navigator.javaEnabled())

Работает в Mozilla (FF3) и IE7. (64)

Другие вопросы по тегам