2011-09-23 12 views
5

Istnieje już wiele zasobów na ten temat, ale po prostu nie mogę go uruchomić. Co ja robię źle? Plik jar jest pod adresem:Jak osadzić słoik w HTML

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

I kod używam do ankiety jest:

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

Strona testowa używam jest pod adresem:

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

Po pobraniu słoika działa dobrze, więc jestem pewien, że problem dotyczy tylko osadzania html. Pleas pomoc!

Ponadto, pojawia się następujący błąd:

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

+0

Co dziedziczy ImpViewer? Czy możesz uwzględnić jego definicję klasy? – Sam

+0

Cześć Sam, nie wiem, zostałem wręczony bez kodu źródłowego. Z pewnością nie dziedziczy z Applet! Czy mimo to można go bez tego umieścić na stronie internetowej? – Bill

Odpowiedz

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

do 'aplet' jest nie aplet.

BTW - ładny interfejs użytkownika. Podobnie jak sposób, w jaki czerwony splash pojawia się na stronie "Welcome Introductory Workshop". Bardzo gładki.

Uruchom go z linku za pomocą Java Web Start (& proszę nie próbować wkurzyć takiego pięknego interfejsu do strony internetowej).


Jeśli klient nalega na GUI jest nabity na stronie internetowej, a następnie (spoliczkować je dla mnie &) spróbować tej sztuczki.

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

Nacisk kładzie się na słowo "hack".

  1. Przed zniknięciem pojawi się ekran Frame.
  2. Będzie działać tylko w rozdzielczości 720 x 564 pikseli, w przeciwieństwie do java.awt.Frame, który można zmienić w dowolnym rozmiarze. Ale i tak twoja "100%" szerokość/wysokość była i tak trochę optymistyczna. Niektóre przeglądarki będą honorować te ograniczenia, inne nie.
+0

Cześć Andrew, dzięki za dopełnienie, nie napisałem interfejsu użytkownika, został mi przekazany przez mojego klienta. A on po prostu CHCESZ umieścić go na stronie internetowej, więc to nie jest moje miejsce do powiedzenia "nie". Czy jest to możliwe? – Bill

+0

Zobacz aktualizację. –

1

Zajęło to trochę wysiłku, ale klasa ImpViewer ma następującą definicję:

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

ImpViewer NIE jest Applet jak to powinno być, ale zamiast tego ImWindow. Powinien on dziedziczyć po Applet lub może ImApplet.

W obu przypadkach pomysł Andrewsa na korzystanie z Java Web Start jest uzasadniony. Aplikacja wygląda bardziej jak aplikacja komputerowa.

+0

Możesz zobaczyć przykład Java Web Start na mojej starej stronie studenckiej tutaj: [Sam's Tetris Page] (http://students.cs.byu.edu/~samuelms/applets/tetris.php). Zobacz link [Uruchom Tetris Applet Using Java WebStart] (http://students.cs.byu.edu/~samuelms/applets/tetris/tetris.jnlp) link. To tylko daje przykład tego, jak będzie wyglądać użytkownik. – Sam

+0

W porządku, po prostu powiem mojemu klientowi, żeby używał JavaWS. Dzięki za informację. – Bill

+0

Pomimo, że w powyższej edycji uwzględniono "wpychanie w aplet hackera", zdecydowanie zalecam zastosowanie podejścia JWS. –

1

Applet to komponent Java, który obsługuje właściwe wywołania, aby pokazać się osadzone na stronie internetowej. Produkt, który posiadasz (plik JAR) zawiera wszystko, co niezbędne do uruchomienia programu; jednak nie ma on właściwego interfejsu (apletu) do uruchamiania tego programu osadzonego na stronie internetowej.

Porozmawiaj z autorem produktu (jeśli ten autor jest niedostępny, poszukaj dokumentacji) i zobacz, czy dostępny jest interfejs apletu. Być może jest to tylko kwestia użycia innej nazwy klasy. Jeśli wygląda na to, że taki interfejs nie jest dostępny, nikt nie wykonał koniecznych prac, aby uczynić go "możliwym do osadzenia" na stronie internetowej. Bez znajomości produktu bardziej szczegółowo, nie jest łatwo określić, czy wysiłek stworzenia interfejsu Applet w produkcie jest łatwy, czy nie.

Jeśli nie masz kodu źródłowego, to ilość wysiłku, aby rozwinąć interfejs Applet do tego, co masz, jest nawet większa niż nieznany wysiłek, jaki byłby w przypadku kodu źródłowego.

Istnieje kilka produktów, które umożliwiają przeglądanie i kontrolowanie aplikacji za pomocą przeglądarki internetowej, nawet jeśli dana aplikacja nie została zaprojektowana do osadzenia na stronie internetowej. Produkty te wydają się być drogie i zastrzeżone; ale jeśli jest naprawdę krytyczny dla misji (i jeśli zarabia wystarczająco dużo), to koszt i wysiłek mogą być znośne. Dzięki takiemu rozwiązaniu przeglądarka faktycznie otwiera okno na skonfigurowany "serwer aplikacji", który uruchamia aplikację w trybie pełnoekranowym za każdym razem, gdy nawiązane jest połączenie. Tak, to dziwna architektura; jednak taka dziwna architektura istnieje celowo, ponieważ jest to jedyny sposób na zrobienie pewnych rzeczy, gdy aplikacja nie działa w innych środowiskach.

Spójrz na rozwiązanie Citrix, jeśli możesz sobie na to pozwolić (pamiętaj, że w grę wchodzą dodatkowe licencje Windows) i możesz znieść jego wydajność i dziwactwa.

+0

+1 Być może ktokolwiek dał to użytkownikowi, może uczynić go kompatybilnym z apletami. Wygląda na to, że aplikacja została napisana w programie "Impatica dla programu PowerPoint 4.0" przez "FACULTY-PC DAL". Ponadto najwyraźniej "com.impatica.v402.ImPlayer.class" rozszerza aplet. Jednak nie mogłem nic z tym zrobić. :( – Sam