2012-06-09 6 views
10

Ich bin mir sicher, dass diese Frage eine Million Mal gestellt wurde, aber egal wie viele Google-Suchen ich mache, kann ich das nicht funktionieren. Ich versuche grundsätzlich, ein Projekt mit mehreren Paketen in eine Webseite zu integrieren. Ich habe ein Testprogramm gemacht, bei dem nur ein paar Bälle auf dem Bildschirm herumgewirbelt wurden. Ich lege die Hauptklasse in ein Paket und die Ballklasse in ein anderes, nur um es zu testen, und es scheint gut zu laufen. Aber das Programm, das ich tatsächlich in einer Webseite benötige (nur FinalProject genannt) weigert sich, es zu tun.Java Einbettung in HTML

Das Beste, was ich tun kann, ist mir einen leeren Bildschirm, ohne einen Fehler, sondern nur weiß. Wenn ich versuche zu klicken, wo es sein sollte, passiert nichts, ich denke, weil das Applet dort ist, aber nur weiß zeigt, so kann ich es nicht sehen. Ich habe den Tag applet verwendet, der nach meinem Verständnis jetzt abgeschrieben wird, aber ich muss dieses Projekt auf einer Webseite einbinden, nur damit der Lehrer es sehen kann. Wir haben bereits getestet, dass die Projekte anderer Leute (die das applet-Tag verwendeten) funktionieren, also habe ich versucht, für den Moment dabei zu bleiben und mir Sorgen zu machen, dass es danach in jedem Browser funktioniert. Obwohl das sehr wohl das Problem sein könnte. Vielleicht würde es bei seinem Browser funktionieren, aber nicht bei mir. Ich habe versucht, mein Programm auf Google Chrome, Mozilla Firefox und Internet Explorer ohne Glück auszuführen. Hier

ist der HTML-Code:

<html> 
<head> 

</head> 
<body> 
    <applet code = "main.FinalProject.class" width = "700px" height = "500px"></applet> 
</body> 
</html> 

Die HTML-Datei diese Zeilen geschrieben wurden in in [Eclipse Workspace]/FinalProject/bin/test.htm ist. Die FinalProject.class-Datei, auf die in dem HTML verwiesen wird, existiert in [Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class. Die FinalProject.class-Datei fungiert als Hauptklasse, also bin ich mir ziemlich sicher, dass es die ist, die ich ausführen muss. Es ist das mit den Methoden init(), actionPerformed(), paint() und all den guten Sachen.

Derzeit versuche ich, dies offline auf meinem Computer zu laufen, also sollte es keine net URLs geben, die ich denke. Ich habe Eclipse benutzt, um den Java-Code zu schreiben, weiß nicht, ob das irgendeinen Unterschied macht. Unglücklicherweise ist der Java-Code ziemlich groß, zu viel, um ihn hier zu reproduzieren, wenn es etwas Bestimmtes gibt, von dem Sie denken, dass es das Problem ist, das ich suchen und diesen kleinen Abschnitt veröffentlichen kann.

Ein paar meiner Freunde schafften es, ihre zu arbeiten, aber sie sagten, sie müssten alle ihre .png-Dateien entfernen (nervig, aber machbar für mein Projekt). Sie sagten auch, dass sie alle ihren Mausbewegungscode entfernen mussten. Mein Programm ist davon abhängig, ich brauche das, damit es überhaupt funktioniert. Ich weiß, dass es einen Weg geben muss, den MouseListener und den MouseMoveListener Code online zu benutzen, vielleicht ist es ein bisschen anders. Ich weiß nicht, ob das etwas damit zu tun hat, aber ich dachte mir, ich würde darauf hinweisen, nur um sicher zu gehen.

Jede Hilfe hier würde sehr geschätzt werden.

+0

Ich nehme an, dass Sie die Klasse FinalProject im Paket main innerhalb des Java-Codes deklariert haben? Sie könnten versuchen, es in das Standardpaket zu verschieben, um zu überprüfen, ob der Pfad das Problem ist. – Pyranja

+0

FinalProject gehört zur Hauptklasse. Ich habe es nicht physisch dorthin verschoben, ich habe eine neue Klasse in Eclipse erstellt und sie unter bin/main/abgelegt, was ich für den richtigen Ort halte. Das Verschieben in das Standardpaket und das Ändern des HTML-Codes, den ich ursprünglich hatte, sowie die Änderung von artlung an den neuen Speicherort scheinen keine Auswirkungen zu haben. – Doug

+2

Oh whoops, ich sagte FinalProject ist in der Hauptklasse. Das macht keinen Sinn. Ich meinte FinalProject ist die Main-Klasse und ist auch im Hauptpaket. Das sollten 2 Sätze sein, irgendwie habe ich sie kombiniert. – Doug

Antwort

6

Im Grunde sind Sie so etwas wie zu fragen: How to deploy a java applet for today's browsers (applet, embed, object)?

Darauf basierend, glaube ich, was Sie wollen, ist:

<object 
    classid="clsid:CAFEEFAC-0015-0000-0000-ABCDEFFEDCBA" 
    style="height: 500px; width: 700px;"> 
    <param name="code" value="FinalProject.class"> 
    <comment> 
     <embed code="FinalProject.class" 
     type="application/x-java-applet" 
     height="500" width="700"> 
     <noembed> 
      This browser appears to lack support for Java Applets. 
     </noembed> 
     </embed> 
    </comment> 
    </object> 

Jetzt haben Sie einen Dateinamen von main.FinalProject.class in Ihrem Code. Es scheint, als wäre FinalProject.class wahrscheinlicher. Aber deine könnte stimmen. In jedem Fall muss sich diese HTML-Datei im selben Ordner befinden wie main.FinalProject.class oder FinalProject.class und alle Klassen, die auch benötigt werden.

Jetzt müssen Sie möglicherweise auch sicherstellen, dass Ihre Browser tatsächlich ein Applet ausführen können.Siehe: How do I enable Java in my web browser?


aktualisiert

Basierend auf dem Feedback von Andrew Thompson, ist die bevorzugte Lösung JavaScript von Oracle, wie diese zu verwenden:

<script src="http://www.java.com/js/deployJava.js"></script> 
<script> 
    var attributes = { 
     code:'FinalProject.class', 
    width:700, height:500} ; 
    var parameters = {}; // does the Applet take parameters? 
    var version = '1.6' ; // does the Applet require a minimum version of Java 
    deployJava.runApplet(attributes, parameters, version); 
</script> 

Dies erfordert die Fähigkeit zu laden beliebiges JavaScript, aber Sie könnten auch diese deployJava.js erfassen und diese auch lokal sein. Könnte einen Blick wert sein.

+1

Danke für die schnelle Antwort. Chrome und IE zeigen jedoch keine Veränderung, es ist immer noch nur ein leerer Bildschirm auf beiden. Firefox war ein bisschen komisch, es sagte, dass ich ein anderes Plugin brauchte (obwohl andere getestete Projekte es taten und immer noch gut funktionieren) und als ich es sagte, um es zu überprüfen, konnte es nichts finden. Ich googelte für die neueste Version für Firefox, heruntergeladen und installiert, aber es sagt immer noch, dass ich ein anderes Plugin brauche. Ich bin mir nicht sicher, was ich von dort aus tun soll. Hinweis: Keiner der Browser zeigt "Dieser Browser scheint keine Unterstützung für Java Applets zu haben". Botschaft. – Doug

+0

Mein Chrome und Safari haben den Code in dieser Antwort auf MacOSX funktioniert. Firefox ist anfangs fehlgeschlagen, aber ich habe den Typ im embed-Tag aktualisiert und jetzt funktioniert es. Sie können auch sehen: http://java.com/en/download/help/enable_browser.xml – artlung

+0

Es sagt, es ist aktiviert, und ich hatte noch nie Probleme mit anderen Java-Applets online. Zugegeben, es ist ziemlich selten, dass ich eins benutze, aber es hat immer noch gut funktioniert. Alle Browser tauchen immer wieder mit dem "Sind Sie wirklich sicher, dass Sie das ausführen wollen? Es könnte Ihren Computer explodieren!" Immer wenn ich versuche es zu laden, weiß ich, dass es nicht deaktiviert ist. – Doug