Java 在web应用程序中运行小程序

Java 在web应用程序中运行小程序,java,applet,Java,Applet,我想在我的web应用程序中使用html小程序标记运行简单的小程序,但它会出现如下错误 java.lang.ClassNotFoundException:MyApplet 如果可能的话,请给我一份申请表的样本….检查两件事。 1.代码库是正确的。 若要检查它是否正确写入,请编写完整的URL(页面的URL+代码库),并直接在浏览器中尝试。确保它是正确的 类名写得正确。它必须是完全限定的类名(包括包名) 如果不起作用,请在此处张贴您的标记问题是小程序引擎无法在您定义的代码库中找到您的MyApplet类

我想在我的web应用程序中使用html小程序标记运行简单的小程序,但它会出现如下错误

java.lang.ClassNotFoundException:MyApplet

如果可能的话,请给我一份申请表的样本….

检查两件事。 1.代码库是正确的。 若要检查它是否正确写入,请编写完整的URL(页面的URL+代码库),并直接在浏览器中尝试。确保它是正确的

  • 类名写得正确。它必须是完全限定的类名(包括包名)

  • 如果不起作用,请在此处张贴您的标记

    问题是小程序引擎无法在您定义的代码库中找到您的MyApplet类

    这可能是因为类位于/WEB-INF/classes目录下。此目录受servlet引擎保护,因为它不能从外部资源访问(可以是JSP/HTML页面上的小程序标记)

    有几种方法可以解决这个问题。最简单的方法是将MyApplet类打包成jar文件(我们称之为
    MyApplet.jar
    ),并将其保存在可访问目录(即web应用程序的jsp文件夹)中。 例如,假设您有以下用于web应用程序的文件夹:

    /MyWebApp/jsp
    /MyWebApp/applet
    /MyWebApp/WEB-INF
    
    客户端浏览器可以访问jsp和小程序文件夹的内容

    然后,将myapplet.jar保存在applet文件夹中,并按如下方式设置applet标记配置(假设您的web上下文是MyWebApp):


    我知道这是一个旧线程……但我想出了一个小技巧,允许您为WEB-INF/classes文件夹中的小程序提供服务,这样您的项目中就不需要额外的jar(并且您可以更快地重新部署小程序)。缺点是您无法对小程序进行签名(因为它是.class而不是jar).让我们切入正题吧

    首先,创建一个服务小程序的小servlet(它需要Javassist):

    现在,在web.xml中将AppletServlet(我知道,这个名字很糟糕)声明为servlet:

    <servlet>
        <servlet-name>Applet Servlet</servlet-name>
        <servlet-class>com.example.AppletServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Applet Servlet</servlet-name>
        <url-pattern>/applet/*</url-pattern>
    </servlet-mapping>
    
    
    小程序Servlet
    com.example.AppletServlet
    小程序Servlet
    /小程序/*
    
    最后,从页面中调用小程序:

    <object type="application/x-java-applet" height="300" width="550">
        <param name="codebase" value="applet/" />
        <param name="code" value="com.example.MyApplet" />
        <param name="teste" value="teste"></param>
        Applet failed to run. No Java plug-in was found.
    </object>
    
    
    小程序无法运行。找不到Java插件。
    
    就这样,servlet将使用Javassist获取类的字节码,并将其提供给请求


    免责声明如果有人知道您的包结构,他们可以下载所有类并从那里做坏事。因此,请确保您只允许servlet服务于实际为applet的类。

    显示用于嵌入applet的完整标记。这是我使用的applete标记问题在代码库中。Make确保它指向类文件。顺便说一句,applet标记在HTML 5中不受欢迎,Chrome完全不支持。因此,我建议您使用tag而不是1)applet元素在HTML 4.01中不受欢迎,而不是在HTML 5中。2) 刚刚下载了Chrome9.0.597.98,并将它指向我网站上一对小程序,它们使用applet元素()。尽管页面声明没有HTML版本(淘气的我),但它仍然工作得很好。所以Chrome肯定能识别applet元素(a)。3) 使用object元素并立即丢失基于Mozilla的浏览器。遗憾的是,他们还没有放弃愚蠢的嵌入元素并接受公认的标准,但事实就是如此。。。。。。继续。。由于object/embed崩溃,我建议使用“deployJava.js”(追踪链接)脚本来部署小程序。它不是一个完美的解决方案,但由于Oracle鼓励开发人员热链接到它,并支持它,因此它是小程序的最佳部署选项之一。(a) Java已经安装了,这是我的欺骗&我想Chrome足够聪明,能够接受当前的安装并使用它。但这不是重点。安装Java时,Chrome无法识别小程序元素。请编辑您的答案,以包含关闭小程序标记和宽度/高度属性。所显示的HTML是无效的,用无效HTML之类的琐事玷污这样一个好的答案是很遗憾的。还要注意的是,自1.4.2以来,applet(尤其是applet部署)中的许多内容都发生了变化,因此查找文档非常方便。如果可能,为1.6。为此,您可以扫描我在其他评论中提到的applet Wiki条目中的一些链接。这是个好主意,但它不会编译,“pool”从何而来?我的错。复制和粘贴错误的典型示例;)现在应该可以了
    <servlet>
        <servlet-name>Applet Servlet</servlet-name>
        <servlet-class>com.example.AppletServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Applet Servlet</servlet-name>
        <url-pattern>/applet/*</url-pattern>
    </servlet-mapping>
    
    <object type="application/x-java-applet" height="300" width="550">
        <param name="codebase" value="applet/" />
        <param name="code" value="com.example.MyApplet" />
        <param name="teste" value="teste"></param>
        Applet failed to run. No Java plug-in was found.
    </object>