web-dev-qa-db-fra.com

Java Intégration dans HTML

Je suis sûr que cette question a été posée un million de fois, mais peu importe le nombre de recherches Google que je fais, je ne peux pas faire en sorte que cela fonctionne. J'essaie essentiellement d'obtenir un projet avec plusieurs packages à intégrer dans une page Web. J'ai fait un programme de test qui a juste fait rebondir quelques balles sur l'écran et a pu le faire fonctionner. J'ai mis la classe principale dans un paquet et la classe ball dans un autre juste pour le tester et cela semble bien fonctionner. Mais le programme dont j'ai réellement besoin dans une page Web (juste appelée FinalProject) refuse de le faire.

La meilleure chose que je puisse faire est de me donner un écran vierge, sans donner d'erreur mais juste blanc. Si j'essaie de cliquer là où cela devrait se produire, rien ne se passe, je pense que l'applet est là mais montre juste du blanc donc je ne le vois pas. J'ai utilisé la balise applet, qui, à ma connaissance, est maintenant dépréciée, mais je dois transformer ce projet sur une page Web afin que l'enseignant puisse le voir. Nous avons déjà testé le fonctionnement des projets d'autres personnes (qui utilisaient la balise applet), donc j'essayais de m'en tenir à cela pour l'instant et je craignais de le faire fonctionner sur tous les navigateurs par la suite. Mais cela pourrait très bien être le problème. Peut-être que cela fonctionnerait sur son navigateur mais pas sur le mien ici. J'ai essayé d'exécuter mon programme sur Google Chrome, Mozilla Firefox et Internet Explorer sans succès.

Voici le code HTML:

<html>
<head>  

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

Le fichier HTML dans lequel il est écrit est en [Eclipse Workspace]/FinalProject/bin/test.htm. Le fichier FinalProject.class référencé dans le HTML existe dans [Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class. Le fichier FinalProject.class agit comme la classe principale, donc je suis presque sûr que c'est celui que je dois exécuter. C'est celui avec les méthodes init (), actionPerformed (), Paint () et toutes ces bonnes choses.

Actuellement, j'essaie d'exécuter cela hors ligne sur mon ordinateur, donc il ne devrait pas y avoir d'URL nette, je pense. J'ai utilisé Eclipse pour écrire le code Java, ne sais pas si cela fait une différence. Malheureusement, le code Java est assez grand, trop à reproduire ici, si il y a quelque chose de spécifique que vous pensez être le problème que je peux regarder et poster cette petite section.

Quelques-uns de mes amis ont réussi à faire fonctionner le leur, mais ils ont dit qu'ils devaient supprimer tous leurs fichiers .png (ennuyeux mais faisable pour mon projet). Ils ont également dit avoir dû supprimer tout le code de mouvement de leur souris. Mon programme dépend un peu de cela, j'en ai besoin pour que ça marche. Je sais qu'il DOIT y avoir un moyen d'utiliser tout le code MouseListener et MouseMoveListener en ligne, mais c'est peut-être un peu différent cependant. Je ne sais pas si cela a quelque chose à voir avec ça, mais j'ai pensé que je le signalerais juste pour être en sécurité.

Toute aide est grandement appréciée ici.

10
Doug

Fondamentalement, vous demandez quelque chose comme: Comment déployer une Java pour les navigateurs d'aujourd'hui (applet, embed, object)?

Sur cette base, je pense que ce que vous voulez, c'est:

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

Maintenant, vous avez un nom de fichier de main.FinalProject.class dans votre code. Il semble que FinalProject.class serait plus probable. Mais le vôtre pourrait avoir raison. Dans tous les cas, ce fichier html doit se trouver dans le même dossier que main.FinalProject.class ou FinalProject.class et toutes les classes qui peuvent également être requises.

Maintenant, vous devrez peut-être également vous assurer que vos navigateurs peuvent réellement exécuter une applet. Voir: Comment puis-je activer Java dans mon navigateur Web?


Mettre à jour

Sur la base des commentaires d'Andrew Thompson, la solution préférée consiste à utiliser JavaScript d'Oracle, comme ceci:

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

Cela nécessite la possibilité de charger du JavaScript arbitraire, mais vous pouvez également capturer ce deployJava.js et le faire aussi local. Ça vaut peut-être le coup d'oeil.

7
artlung