2012-06-09 10 views
10

Sono sicuro che questa domanda è stata fatta un milione di volte, ma non importa quante ricerche Google faccio non riesco a farlo funzionare. In pratica sto provando a far sì che un progetto con più pacchetti sia incorporato in una pagina web. Ho fatto un programma di test che ha fatto rimbalzare alcune sfere sullo schermo ed è stato in grado di farlo funzionare. Metto la classe principale in un pacchetto e la classe palla in un altro solo per testarlo e sembra che stia andando bene. Ma il programma che effettivamente ho bisogno in una pagina web (appena chiamato FinalProject) si rifiuta di farlo.Java incorporato in HTML

La cosa migliore che posso ottenere è di darmi uno schermo vuoto, senza dare un errore ma solo bianco. Se provo a fare clic dove dovrebbe essere non succede nulla, penso perché l'applet è lì, ma sta mostrando solo bianco, quindi non riesco a vederlo. Ho usato il tag applet, che dalla mia comprensione è ora deprezzato, ma ho bisogno di trasformare questo progetto in una pagina web solo così l'insegnante può vederlo. Abbiamo già testato che i progetti di altre persone (che utilizzavano il tag applet) funzionavano, quindi per ora cercavo di restare in linea con quello e mi preoccupo di farlo funzionare su ogni browser. Anche se questo potrebbe benissimo essere il problema. Forse funzionerebbe sul suo browser ma non sul mio qui. Ho provato a eseguire il mio programma su Google Chrome, Mozilla Firefox e Internet Explorer senza fortuna.

Ecco il codice HTML:

<html> 
<head> 

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

Il file HTML questo è scritto in è in [Eclipse Workspace]/FinalProject/bin/test.htm. Il file FinalProject.class a cui fa riferimento l'HTML esiste in [Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class. Il file FinalProject.class funge da classe principale, quindi sono abbastanza sicuro che è quello che devo eseguire. È quello con i metodi init(), actionPerformed(), paint() e tutte quelle cose buone.

Attualmente sto cercando di eseguirlo offline sul mio computer, quindi non ci dovrebbero essere URL di rete che penserei. Ho usato Eclipse per scrivere il codice Java, non so se questo fa alcuna differenza. Sfortunatamente, il codice Java è piuttosto grande, troppo da riprodurre qui, se c'è qualcosa di specifico che pensi sia il problema che posso guardare e pubblicare quella piccola sezione.

Alcuni dei miei amici sono riusciti a far funzionare il loro, tuttavia hanno detto che dovevano rimuovere tutti i loro file .png (fastidiosi ma fattibili per il mio progetto). Hanno anche detto di dover rimuovere tutti i loro codici di movimento del mouse. Il mio programma dipende da questo, ho bisogno che funzioni per niente. So che ci deve essere un modo per utilizzare tutti i codici MouseListener e MouseMoveListener online, forse è un po 'diverso però. Non so se questo ha qualcosa a che fare con questo, ma ho pensato che lo avrei segnalato solo per essere sicuro.

Qualsiasi aiuto qui sarebbe molto apprezzato.

+0

Suppongo che abbia dichiarato la classe FinalProject nel package main all'interno del codice java? Si potrebbe provare a spostarlo nel pacchetto predefinito per verificare se il percorso è il problema. – Pyranja

+0

FinalProject è nella classe principale. Non l'ho spostato fisicamente in quella posizione, ho creato una nuova classe in Eclipse e l'ho messa sotto bin/main/che presumo sia la posizione giusta. Spostarlo nel pacchetto di default e cambiare il codice HTML che avevo originariamente come artlung nella nuova posizione non sembra avere alcun effetto. – Doug

+2

Oh whoops, ho detto che FinalProject è nella CLASSE principale. Non ha molto senso. Intendevo che FinalProject è la classe principale, ed è anche nel pacchetto principale. Quello era destinato a essere 2 frasi, in qualche modo li ho combinati. – Doug

risposta

6

In sostanza si sta chiedendo qualcosa di simile: How to deploy a java applet for today's browsers (applet, embed, object)?

Sulla base di questo, penso che quello che vuoi è:

<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> 

Ora, si ha un nome di file di main.FinalProject.class nel codice. Sembra che FinalProject.class sia più probabile. Ma il tuo potrebbe avere ragione. In ogni caso, questo file html deve trovarsi nella stessa cartella di main.FinalProject.class o FinalProject.class e qualsiasi altra classe possa essere richiesta.

Ora, potrebbe anche essere necessario assicurarsi che i browser possano effettivamente eseguire un'applet.Vedere: How do I enable Java in my web browser?


Aggiornamento

Sulla base del feedback da Andrew Thompson, la soluzione preferita è quella di utilizzare JavaScript da Oracle, come questo:

<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> 

Questo richiede la capacità di caricare JavaScript arbitrario, ma puoi anche catturare quel deployJava.js e farlo essere locale. Potrebbe meritare un'occhiata.

+1

Grazie per la rapida risposta. Tuttavia Chrome e IE non mostrano alcun cambiamento, è ancora solo una schermata vuota su entrambi. Firefox era un po 'strano, diceva che avevo bisogno di un plugin diverso (anche se altri progetti testati funzionavano e funzionano ancora bene) e quando gli dissi di controllarlo non riuscì a trovare nulla. Ho cercato su Google l'ultima versione per Firefox, l'ho scaricata e installata, ma continua a dire che ho bisogno di un altro plug-in. Non sono sicuro di cosa fare da lì. Nota: nessuno dei browser ha visualizzato il messaggio "Questo browser sembra privo di supporto per le applet Java". Messaggio. – Doug

+0

My Chrome e Safari hanno il codice in questa risposta che funziona su MacOSX. Firefox inizialmente non funzionava, ma ho aggiornato il tipo nel tag embed e ora funziona. Puoi anche guardare: http://java.com/en/download/help/enable_browser.xml – artlung

+0

Dice che è abilitato e non ho mai avuto problemi con altre applet Java online. Certo, è piuttosto raro che ne usi uno, ma comunque ha sempre funzionato bene. Tutti i browser continuano a spuntare con "Sei proprio sicuro di voler eseguire questo? Potrebbe esplodere il tuo computer!" ogni volta che provo a caricarlo, quindi so che non è disabilitato. – Doug