【问题标题】:How to embed jar in HTML如何在 HTML 中嵌入 jar
【发布时间】:2011-11-23 19:24:42
【问题描述】:

这方面已经有很多资源了,但我似乎无法让它发挥作用。我究竟做错了什么? 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

【问题讨论】:

  • ImpViewer 继承自什么?你能包括它的类定义吗?
  • 嗨 Sam,我不知道,我没有源代码就拿到手了。它肯定不是从 Applet 继承的!反正没有它可以把它塞进一个网站吗?

标签: java html applet


【解决方案1】:
java.lang.ClassCastException: ImpViewer cannot be cast to java.applet.Applet

“小程序”不是小程序。

顺便说一句 - 漂亮的用户界面。就像红色飞溅淡入“Welcome Introductory Workshop”页面的方式一样。非常流畅。

从使用Java Web Start 的链接启动它(请不要尝试将如此漂亮的用户界面塞进网页)。


如果客户坚持要将 GUI 塞进网站,那么(替我打他们一巴掌)试试这个 hack。

/*
<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();
                }
            }
        }
    }
}

重点是“hack”这个词。

  1. Frame 将在屏幕上闪烁然后消失。
  2. 它只能在 720x564 像素下工作,不像 java.awt.Frame 可以调整为任意大小。但是,无论如何,您的“100%”宽度/高度还是有点乐观。有些浏览器会遵守这些限制,有些则不会。

【讨论】:

  • 您好 Andrew,感谢您的补充,UI 不是我编写的,它是我的客户交给我的。他只是想把它塞进一个网站,所以这不是我说不的地方。有没有可能?
【解决方案2】:

费了些力气,但您的 ImpViewer 类具有以下定义:

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

ImpViewer 并非应有的Applet,而是ImWindow。它应该继承自 AppletImApplet

无论如何,Andrews 使用 Java Web Start 的想法都是合法的。您拥有的应用看起来更像是桌面应用。

【讨论】:

  • 您可以在我的旧学生网站上看到 Java Web Start 的示例:Sam's Tetris Page。请参阅Run Tetris Applet Using Java WebStart 链接。这只是为您提供用户体验的示例。
  • 好吧,那我就告诉我的客户使用 JavaWS。感谢您提供信息。
  • 尽管在上面的编辑中包含了“将它推入小程序黑客”,但我强烈建议您采用 JWS 方法。
【解决方案3】:

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

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

如果您没有源代码,那么为您所拥有的开发 Applet 接口所付出的努力甚至比使用源代码所付出的未知努力还要多。

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

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

【讨论】:

  • +1 也许谁给了这个用户可以使它与小程序兼容。看起来该应用程序是由“FACULTY-PC DAL”使用“Impatica for PowerPoint 4.0”制作的。此外,显然com.impatica.v402.ImPlayer.class 扩展了 Applet。但是,我什么也做不了。 :(
猜你喜欢
  • 2015-02-03
  • 1970-01-01
  • 2016-02-06
  • 1970-01-01
  • 2018-04-12
  • 2013-08-28
  • 1970-01-01
  • 2019-06-26
  • 2010-10-24
相关资源
最近更新 更多