Ошибка апплета на машинах, отличных от машины разработки - PullRequest
1 голос
/ 11 апреля 2011

Я занимаюсь разработкой апплета Java, и недавно я попытался продемонстрировать апплет на машине, которая мне не принадлежала. Однако я не смог заставить апплет работать на этом компьютере, так как он продолжал работать с ошибками из-за безопасности. Апплет может быть найден в http://www.cs.rpi.edu/~madiav/launch.html.

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

Полный вывод из консоли Java можно найти здесь http://pastebin.com/DjFAJgVW Пример строки типа не найденный класс:

basic: JNLP2ClassLoader.findClass: RhythmWheels.Open: try again ..

Кто-нибудь знает, как я могу избавиться от них и / или это то, что вызывает сбой выполнения на других машинах?

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Сообщения «класс не найден» обычно можно уменьшить, добавив ..

<param name='codebase_lookup' value='false'> 

.. к элементу applet.По крайней мере, если классы - Jar'd.

Подробнее см. Специальные атрибуты апплета .


Примечание: Это апплет param в HTML , не a param в файле JNLP .


Попросите друга сообщить о Java.Свойства версии и java.vendor .


Апплеты могут быть настроены только с помощью JNLP от Sun 1.6.0_10 +.Даже тогда браузер должен был быть специально настроен для использования плагина «следующего поколения» в Linux.Лучше (при тестировании, по крайней мере) поместить совершенно другой апплет в элемент апплета в HTML (тот, который указан в JNLP), чтобы помочь определить, получаете ли «следующее поколение»./ plug-in2 'поведение.


Редактировать 2:

Тестирование: Когда в диалоге доверия отказано:

exception: exit(-1).
ExitException[ 4]java.lang.RuntimeException: exit(-1)
    at com.sun.javaws.Main.systemExit(Unknown Source)
    at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
    at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: ExitException[ 4]java.lang.RuntimeException: exit(-1)

Откуда взялся ExitException?Я не вижу упоминания о не-Sun-коде в трассировке, но не знаю точно, RuntimeException.

Убедитесь, что кадр не пытается вызвать JFrame.EXIT_ON_CLOSE.Даже доверенному апплету не разрешено завершать текущий экземпляр виртуальной машины.Я разобрался, как это обойти, и попробовал - увидеть весь крах браузера.;)

Тестирование: Когда диалог доверия активен:

Апплет запускается и выдает кнопку, чтобы вызвать свободно плавающий «микшер».Кнопки могут издавать звук, но не могут понять его оттуда.


Почему именно этому апплету нужно доверие?


Вероятно, было бы лучше отказаться от апплета и иметьJNLP запускает JFrame напрямую.

Поскольку вы, похоже, ожидаете, что у конечного пользователя будет 1.6.0 (_10 +), было бы также целесообразно вызвать setMinimumSize() на JFrame после pack()называется.

0 голосов
/ 11 апреля 2011

Однако мне не удалось запустить апплет на этом компьютере, так как он продолжал давать сбой с исключениями безопасности.

Я получаю предупреждение о сертификате, но затем он запускается. Может быть, проблемы с Java-версией? У меня довольно свежая версия 1.6.

...