2011-09-23 148 views
5

这里已经有很多资源,但我似乎无法让它工作。我究竟做错了什么?该jar文件是:如何将HTML嵌入到HTML中

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 cannot be cast to java.applet.Applet

+0

ImpViewer继承自什么?你能包括它的类定义吗? – Sam

+0

嗨,山姆,我不知道,我拿到没有源代码。这不是从Applet继承的,这是肯定的!无论如何将它塞进一个没有它的网站? – Bill

回答

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

的 '小程序' 是不是的小程序。

顺便说一句 - 很好的用户界面。就像红色闪屏淡入“​​欢迎入门研讨会”页面一样。非常光滑。

从链接使用Java Web Start(&请不要试图将这样漂亮的UI填充到网页中)启动它。


如果客户坚持在GUI上被塞进了一个网站,然后(他们就打我&)尝试这种破解。

/* 
<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 px下工作,不像java.awt.Frame,它可以调整到任意大小。但是,无论如何,你的'100%'的宽度/高度是有点乐观的。有些浏览器会遵守这些限制,其他浏览器则不会。
+0

嗨安德鲁,谢谢补充,我没有写UI,它是由我的客户交给我的。他只是想把它塞进一个网站,所以这不是我的地方说不。反正有可能吗? – Bill

+0

查看更新。 –

1

它采取了一些努力,但你的ImpViewer类的定义如下:

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

ImpViewer不是Applet喜欢它需要的,但不是一个ImWindow。它应该继承于Applet或者ImApplet

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

+0

你可以在我的老学生网站看到一个Java Web Start的例子:[Sam's Tetris Page](http://students.cs.byu.edu/~samuelms/applets/tetris.php)。请参阅[使用Java WebStart运行Tetris Applet](http://students.cs.byu.edu/~samuelms/applets/tetris/tetris.jnlp)链接。这只是给你一个用户体验会是什么样子的例子。 – Sam

+0

好的,我会告诉我的客户使用JavaWS。感谢您的信息。 – Bill

+0

尽管在上面的编辑中包含了“在applet黑客中推送”,但我强烈建议您采用JWS方法。 –

1

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

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

如果您没有源代码,那么为开发Applet界面所付出的努力量要比源代码所花费的努力量要大得多。

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

在您可以负担得起的情况下,请向思杰寻求解决方案(请记住还有额外的Windows许可证),您可以容忍它的性能和怪癖。

+0

+1也许谁给了这个用户可以使它与applet兼容。看起来应用程序是由“FACULTY-PC DAL”的“Impatica for PowerPoint 4.0”制作的。另外,显然'com.impatica.v402.ImPlayer.class'扩展了Applet。但是,我无法得到任何事情发生。 :( – Sam