Java-апплет не загружается в среде разработчика Django (просмотр переменных, не переданных в шаблон) - PullRequest
0 голосов
/ 02 августа 2011

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

java.lang.ClassNotFoundException: HelloWorld
    at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Exception: java.lang.ClassNotFoundException: HelloWorld


HTML-код апплета:

<applet code="HelloWorld" archive="{{ STATIC_URL }}HelloWorld.jar" width=525 height=635>
</applet>


Корень моего сайтана машине разработки настроен как C:/www/django/mysite.Мои настройки Django:

ABSOLUTE_PATH = lambda x: os.path.join(os.path.abspath(os.path.dirname(__file__)), x)
STATIC_ROOT = ABSOLUTE_PATH('media/')
STATIC_URL = 'media/'


JAR апплета хранится в папке / media /.Я считаю, что у меня правильные настройки Django, потому что, если я указываю свой браузер на http://localhost:8000/media/helloworld.jar, он просит меня загрузить файл Java.Однако, когда я загружаю страницу встроенным апплетом, я получаю сообщение об ошибке.Я думаю, что браузер не может найти фактический файл JAR, но я не уверен.Я пробовал различные изменения (добавить «.class», добавить префикс пакета и т. Д.) Безрезультатно.Я также открыл файл JAR, чтобы убедиться, что файл класса присутствует - это так.

Я пометил этот вопрос с помощью java и django, потому что я не уверен, в чем проблема.Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 02 августа 2011

Ваш класс, кажется, находится в корневом пакете (пакет не указан). Это не обязательно будет работать, и это плохая практика. Определите пакет (например, com.company.applets) и поместите свой класс апплета в этот пакет.

0 голосов
/ 19 августа 2011

Я обнаружил, что переменная {STATIC_URL} не подается в шаблон. Вот шаги, которые я выполнил, чтобы заставить мои апплеты работать:

Во-первых, я добавил шаблонные контекстные процессоры в setup.py:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.contrib.messages.context_processors.messages")

Я добавил RequestContext для моих просмотров. Это снабжает шаблон моими переменными:

from django.template import RequestContext
...
return render_to_response(
      'empirical/empirical-outline-tool.html',
      form_data,
      context_instance=RequestContext(request)
      )

Наконец, я отредактировал шаблоны URL для обслуживания статических файлов в режиме разработки:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
....
urlpatterns += staticfiles_urlpatterns()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...