2011-09-23 125 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