Java applet无法在Django dev环境中加载(视图变量未提供给模板)

时间:2011-08-02 17:30:19

标签: java html django

我正在将测试applet整合到我正在使用Django构建的新站点上。当我在本地加载applet的页面时,我收到“找不到类”错误。

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文件。但是,当我使用嵌入式applet加载页面时,我收到错误。我认为浏览器无法找到实际的jar文件,但我不确定。我尝试了各种更改(添加“.class”,添加包前缀等)无济于事。我还打开了JAR文件以确保类文件存在 - 它是。

我用java和django标记了这个问题,因为我不确定问题出在哪里。感谢您的时间!

2 个答案:

答案 0 :(得分:1)

您的类似乎位于根包中(未指定包)。这不一定有效,这是一个不好的做法。定义一个包(例如com.company.applets)并将applet类放在这个包中。

答案 1 :(得分:0)

我发现{STATIC_URL}变量没有提供给模板。以下是我使applet工作的步骤:

首先,我在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)
      )

最后,我编辑了我的网址模式,以便在开发模式下提供静态文件:

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
....
urlpatterns += staticfiles_urlpatterns()