如何在HTML中嵌入jar

时间:2011-09-23 15:59:38

标签: java html applet

这方面有很多资源,但我似乎无法让它发挥作用。我究竟做错了什么? jar文件位于:

http://www.alexandertechniqueatlantic.ca/multimedia/AT-web-presentation-imp.jar

我用来嵌入的代码是:

<APPLET ARCHIVE="multimedia/AT-web-presentation-imp.jar" 
        CODE="ImpViewer.class" 
        WIDTH=100% 
        HEIGHT=100%>
</APPLET>

我使用的测试页面位于:

http://www.alexandertechniqueatlantic.ca/test.php

当我下载jar时它运行正常,所以我确定问题只是html嵌入。请帮忙!

另外,我收到以下错误:

  

java.lang.ClassCastException:ImpViewer无法强制转换为   java.applet.Applet中

3 个答案:

答案 0 :(得分:7)

java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet

'applet'是小程序。

BTW - 很棒的用户界面。就像红色飞溅进入“欢迎入门工作坊”页面一样。很顺利。

使用Java Web Start从链接启动它(请不要尝试将这样漂亮的用户界面填入网页)。


如果客户坚持要将网页塞进网站然后(为我拍打它们)尝试这个黑客。

/*
<APPLET 
    ARCHIVE="AT-web-presentation-imp.jar" 
    CODE="ImpViewerApplet" 
    WIDTH=720 
    HEIGHT=564>
</APPLET>
*/
import java.awt.*;
import java.applet.*;
import java.util.*;

public class ImpViewerApplet extends Applet {

    public void init() {
        setLayout(new BorderLayout());
        Window[] all = Window.getWindows();
        ArrayList<Window> allList = new ArrayList<Window>();
        for (Window window : all) {
            allList.add(window);
        }
        String[] args = {};
        ImpViewer iv = new ImpViewer(); 
        iv.main(args);

        all = Window.getWindows();
        for (Window window : all) {
            if (!allList.contains(window) && window.isVisible()) {
                if (window instanceof Frame) {
                    Frame f = (Frame)window;
                    Component[] allComp = f.getComponents();
                    Component c = f.getComponents()[0];
                    f.remove(c);
                    f.setVisible(false);
                    add(c);
                    validate();
                }
            }
        }
    }
}

强调的是“黑客”这个词。

  1. Frame会在消失前闪现在屏幕上。
  2. 它只能在720x564像素下工作,与可调整为任意大小的java.awt.Frame不同。但是,无论如何,你的'100%'宽度/高度有点乐观。有些浏览器会尊重这些限制,有些则不会。

答案 1 :(得分:1)

需要花费一些精力,但您的ImpViewer类具有以下定义:

public class ImpViewer extends ImWindow
  implements Printable, Runnable
{
   [...]

ImpViewer不是Applet所需要的,而是ImWindow。它应该继承AppletImApplet

无论如何,安德鲁斯使用Java Web Start的想法是合法的。您拥有的应用程序看起来更像桌面应用程序。

答案 2 :(得分:1)

Applet是一个Java组件,它处理显示嵌入在网页中的正确调用。您拥有的产品(JAR文件)包含运行程序所需的一切;但是,它没有正确的界面(小程序)来运行嵌入在网页中的程序。

与产品的作者交谈(如果该作者不可用,请查找文档)并查看applet界面是否可用。也许这只是使用不同类名的问题。如果看起来这样的界面不可用,那么没有人做过必要的工作来使其“嵌入”在网页中。如果不更详细地了解您的产品,就很难确定在产品中创建Applet界面的努力是否容易。

如果您没有源代码,那么开发Applet接口所需的工作量甚至大于源代码所需的未知工作量。

有一些产品允许从Web浏览器查看和控制应用程序,即使有问题的应用程序未设计为嵌入网页中。这些产品往往价格昂贵且专有;但是,如果它真的是关键任务(并且如果它赚足够的钱)那么费用和努力可能是可以承受的。有了这样的解决方案,Web浏览器实际上打开一个窗口,进入配置的“应用程序服务器”,每次建立连接时都以全屏模式启动应用程序。是的,这是一个奇怪的架构;然而,这种奇怪的架构是有目的地存在的,因为当应用程序无法在其他环境中运行时,这是真正唯一可行的方法。

如果您能负担得起,请向思杰寻求这样的解决方案(请记住有额外的Windows许可证)并且您可以容忍它的性能和怪癖。