Java insluiten in HTML

Ik weet zeker dat deze vraag al een miljoen keer is gesteld, maar hoeveel Google-zoekopdrachten ik ook doe, ik krijg dit niet werkend. Ik probeer in feite een project met meerdere pakketten erin te laten insluiten in een webpagina. Ik heb een testprogramma gemaakt dat enkel wat ballen over het scherm liet stuiteren en dat aan de gang kon krijgen. Ik heb de hoofdklasse in het ene pakket geplaatst en de balklasse in een ander pakket om het te testen en het lijkt goed te werken. Maar het programma dat ik eigenlijk nodig heb in een webpagina (zojuist FinalProject genoemd) weigert het te doen.

Het beste wat ik kan doen is me een leeg scherm geven, zonder een fout te geven, maar gewoon wit. Als ik probeer te klikken waar het zou moeten zijn, gebeurt er niets, denk ik omdat de applet er is, maar alleen wit wordt weergegeven, zodat ik het niet kan zien. Ik heb de tag appletgebruikt, die naar mijn idee nu is afgeschreven, maar ik moet dit project inleveren op een webpagina zodat de leraar het kan zien. We hebben al getest dat de projecten van andere mensen (die de tag appletgebruikten) werken, dus ik probeerde me daar voorlopig aan te houden en me zorgen te maken of het daarna in elke browser zou werken. Al zou dat heel goed het probleem kunnen zijn. Misschien zou het in zijn browser werken, maar niet in de mijne hier. Ik heb geprobeerd mijn programma uit te voeren in Google Chrome, Mozilla Firefox en Internet Explorer, maar zonder succes.

Hier is de HTML-code:

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

Het HTML-bestand waarin dit is geschreven, bevindt zich in [Eclipse Workspace]/FinalProject/bin/test.htm. Het bestand FinalProject.class waarnaar in de HTML wordt verwezen, bestaat in [Eclipse Workspace]/FinalProject/bin/ main/FinalProject.class. Het bestand FinalProject.class fungeert als de hoofdklasse, dus ik ben er vrij zeker van dat dit degene is die ik moet uitvoeren. Het is degene met de methoden init(), actionPerformed(), paint() en al die goede dingen.

Momenteel probeer ik dit offline op mijn computer uit te voeren, dus er zouden geen netto-URL’s moeten zijn, denk ik. Ik heb Eclipse gebruikt om de Java-code te schrijven, ik weet niet of dat enig verschil maakt. Helaas is de Java-code nogal groot, te veel om hier te reproduceren, als er iets specifieks is waarvan je denkt dat het het probleem is, kan ik dat kleine gedeelte bekijken en posten.

Een paar van mijn vrienden slaagden erin om die van hen werkend te krijgen, maar ze zeiden dat ze al hun .png-bestanden moesten verwijderen (irritant maar uitvoerbaar voor mijn project). Ze zeiden ook dat ze al hun muisbewegingscode moesten verwijderen. Mijn programma is daar een beetje van afhankelijk, dat heb ik nodig om het überhaupt te laten werken. Ik weet dat er een manier MOET zijn om alle MouseListener- en MouseMoveListener-code online te gebruiken, misschien is het een beetje anders. Ik weet niet of dat hier iets mee te maken heeft, maar voor de zekerheid wilde ik het erop wijzen.

Alle hulp hier wordt zeer op prijs gesteld.


Antwoord 1, autoriteit 100%

In feite vraag je iets als: Hoe implementeer je een Java-applet voor moderne browsers (applet, insluiten, object)?

Op basis daarvan denk ik dat je het volgende wilt:

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

Nu heb je de bestandsnaam main.FinalProject.classin je code. Het lijkt erop dat FinalProject.classwaarschijnlijker is. Maar die van jou zou wel eens gelijk kunnen hebben. In ieder geval moet dit html-bestand zich in dezelfde map bevinden als main.FinalProject.classof FinalProject.classen welke klassen ook vereist zijn.

Nu moet u er misschien ook voor zorgen dat uw browsers een applet kunnen uitvoeren. Zie: Hoe schakel ik Java in mijn webbrowser in?


Bijwerken

Op basis van feedback van Andrew Thompson is de voorkeursoplossing om JavaScript van Oracle te gebruiken, zoals dit:

<script src="https://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>

Dit vereist de mogelijkheid om willekeurig JavaScript te laden, maar je kunt die deployJava.js ook vastleggen en dat ook lokaal laten zijn. Misschien een kijkje waard.

Other episodes