2012-06-09 12 views
10

Estoy seguro de que esta pregunta se ha hecho un millón de veces, pero no importa cómo muchas búsquedas de Google que hago no puedo conseguir este trabajo. Básicamente estoy tratando de obtener un proyecto con múltiples paquetes para ser incrustado en una página web. Hice un programa de prueba que hizo que algunas bolas rebotaran alrededor de la pantalla y fue capaz de hacerlo funcionar. Puse la clase principal en un paquete y la clase de bola en otro solo para probarlo y parece estar funcionando bien. Pero el programa que realmente necesito en una página web (simplemente llamado FinalProject) se niega a hacerlo.Java incrustación en HTML

Lo mejor que puedo llegar a hacer es dame una pantalla en blanco, sin dar un error, pero sólo blanco. Si trato de hacer clic donde debería estar, no pasa nada, creo que porque el applet está ahí, pero solo muestra blanco, así que no puedo verlo. Utilicé la etiqueta applet, que a mi entender ahora está depreciada, pero tengo que convertir este proyecto en una página web para que el profesor pueda verlo. Ya hemos probado que los proyectos de otras personas (que usaban la etiqueta applet) funcionan, así que estaba tratando de seguir así por ahora y luego me preocupé por que funcionara en todos los navegadores. Aunque ese podría ser el problema. Tal vez funcionaría en su navegador pero no en el mío aquí. Intenté ejecutar mi programa en Google Chrome, Mozilla Firefox e Internet Explorer sin suerte.

Aquí está el código HTML:

<html> 
<head> 

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

El archivo HTML esto está escrito en está en [Eclipse Workspace]/FinalProject/bin/test.htm. El archivo FinalProject.class al que se hace referencia en el HTML existe en [Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class. El archivo FinalProject.class actúa como la clase principal, así que estoy bastante seguro de que es el que necesito ejecutar. Es el que tiene los métodos init(), actionPerformed(), paint() y todas esas cosas buenas.

Actualmente estoy tratando de ejecutar esta línea en mi equipo, por lo que no debería haber ninguna URL de red me gustaría pensar. Utilicé Eclipse para escribir el código de Java, no sé si hace alguna diferencia. Desafortunadamente, el código de Java es bastante grande, demasiado para reproducir aquí, si hay algo específico que piensas que es el problema que puedo mirar y publicar esa pequeña sección.

Algunos de mis amigos lograron obtener de ellos de trabajo, sin embargo, dijeron que tuvieron que eliminar todos sus archivos .png (molestos pero factible para mi proyecto). También dijeron que tenían que eliminar todo el código de movimiento del mouse. Mi programa depende de eso, lo necesito para que funcione. Sé que DEBE haber una manera de usar todo el código de MouseListener y MouseMoveListener en línea, aunque tal vez sea un poco diferente. No sé si eso tiene algo que ver con esto, pero pensé que lo señalaría solo para estar seguro.

Cualquier ayuda aquí sería muy apreciada.

+0

Supongo que declaraste que la clase FinalProject estaba en el paquete principal dentro del código java? Podría intentar moverlo al paquete predeterminado para verificar si la ruta es el problema. – Pyranja

+0

FinalProject está en la clase principal. No lo moví físicamente a esa ubicación, creé una nueva clase en Eclipse y la coloqué en bin/main/que supongo que es la ubicación correcta. Moverlo a un paquete predeterminado y cambiar el código HTML que tuve originalmente así como el de Artlung a la nueva ubicación no parece tener ningún efecto. – Doug

+2

Oh, vaya, dije que FinalProject está EN LA CLASE principal. Eso realmente no tiene sentido. Quise decir que FinalProject ES la clase principal, y también está EN EL paquete principal. Eso fue pensado para ser 2 oraciones, de alguna manera las combiné. – Doug

Respuesta

6

Básicamente, usted está pidiendo algo como: How to deploy a java applet for today's browsers (applet, embed, object)?

Basado en eso, creo que lo que desea es:

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

Ahora, usted tiene un nombre de archivo de main.FinalProject.class en el código. Parece que FinalProject.class sería más probable. Pero el tuyo podría estar en lo cierto. En cualquier caso, este archivo html debe estar en la misma carpeta que main.FinalProject.class o FinalProject.class y cualquier clase también puede ser necesaria.

Ahora, también puede ser necesario para asegurarse de que sus navegadores en realidad puede ejecutar un applet.Ver: How do I enable Java in my web browser?


actualización

Basándose en los comentarios de Andrew Thompson, la solución preferida es el uso de JavaScript de Oracle, así:

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

Esto requiere la capacidad de cargar JavaScript arbitrario, pero también podría capturar ese deployJava.js y tener que ser local también. Puede valer la pena mirar.

+1

Gracias por la respuesta rápida. Sin embargo, Chrome e IE no muestran cambios, todavía es solo una pantalla en blanco en ambos. Firefox era un poco raro, decía que necesitaba un complemento diferente (aunque otros proyectos probados lo hicieron y aún funcionan bien) y cuando le pedí que lo revisara, no pude encontrar nada. Busqué en Google la última versión de Firefox, la descargué e instalé, pero todavía dice que necesito otro complemento. No estoy seguro de qué hacer desde allí. Nota: Ninguno de los navegadores mostraba "Este navegador parece carecer de soporte para Applets de Java". mensaje. – Doug

+0

Mi Chrome y Safari tienen el código en esta respuesta trabajando en MacOSX. Firefox inicialmente falló, pero actualicé el tipo en la etiqueta de inserción y ahora funciona. También puede buscar en: http://java.com/en/download/help/enable_browser.xml – artlung

+0

Dice que está activado, y nunca he tenido ningún problema con cualquier otro applets de Java en línea. Es cierto que es bastante raro que use uno, pero aún así siempre funcionó bien. Todos los navegadores siguen apareciendo con "¿Estás realmente seguro de que quieres ejecutar esto? ¡Podría explotar tu computadora!" cada vez que intento cargarlo, entonces sé que no está deshabilitado. – Doug