Domanda

Sono nuovo di Java. Sto semplicemente cercando di creare un file .jar della mia applet in modo da poterlo eseguire dal mio browser. Ecco come appare la mia struttura di directory:

C:\java\pacman\src

contiene tutti i file di classe .java.

C:\java\pacman\assets

contiene circa 4-5 immagini e file audio.

Se provo a usare il seguente codice:

Image someFile=getCodeBase().toString() + "file.png";

Il risultato di getCodeBase () è

file:/C:/java/pacman/bin/

Tuttavia, il seguente codice non viene caricato:

   img=new ImgHelper(getCodeBase().toString() + "assets/");
   ImageIO.read(new File(img.getPath("pacman.png")));

Anche lo spostamento della mia cartella 'assets' nella cartella 'bin' non ha risolto questo problema. Prova a caricare:

file:/C:/java/pacman/bin/assets/pacman.png

dicendo:

Can't read input file!

Ma l'URL che ha dato si apre bene se lo incollo in corsa e premo invio:

Quindi, per evitare un sacco di mal di testa, ho commentato il codice nella mia classe ImgHelper e ho fatto questo:

public ImgHelper(String dir)
{
    //this.imgDir=dir;
    imgDir="C:\\java\\pacman\\assets\\";
}

Che funziona perfettamente. Ma voglio metterlo su un server web e non ho idea di come / cosa dovrei fare per far funzionare tutte le immagini e i suoni. Qualche idea?

Grazie ...

È stato utile?

Soluzione

Perché non mettere tutto in un file JAR e quindi chiamare Class.getResourceAsStream?

Un file JAR è migliore in quanto è una singola connessione HTTP anziché una connessione HTTP per file. È anche molto più flessibile usare uno Stream piuttosto che un File.

getResourceAsStream funzionerà anche quando i file non si trovano in un JAR, devono essere relativi al file di classe.

EDIT:

Un'altra cosa, il metodo File non funzionerà se l'applet si trova su un server in quanto tenterà di aprire il file dal computer locale (penso, non l'ho provato) piuttosto che dal server. Anche se ha provato a creare un percorso file sul server che non funzionerà.

Altri suggerimenti

Sono d'accordo con tofubeer sul JAR, ma se vuoi mettere l'immagine sul tuo server, vedi il tutorial sulle immagini dell'applet qui . La base di codice sarà qualsiasi posizione la tua applet si trova sul server e puoi anche inserire immagini relative a quella sul server. Utilizzare un tracker multimediale insieme al metodo Applet.getImage () per recuperare l'URL. Dall'esempio:

 my_gif = getImage(getDocumentBase(),"imageExample.gif");

Esistono due possibili soluzioni che potrebbero funzionare:

  • Le immagini potrebbero essere presenti all'esterno del JAR dell'applet. È quindi possibile inizializzare l'applet con la posizione della directory in cui sono presenti le immagini. Una volta ottenute tali informazioni, è possibile caricare le immagini dal server. Il tutorial di Sun Java fornisce un esempio di utilizzo del parametro dell'applet per passare la directory di origine dell'immagine.
  • È possibile utilizzare il caricatore di classi dell'applet per caricare le immagini dal JAR dell'applet, utilizzando il metodo getResourceAsStream ().

PS: sarebbe utile se ti riferissi alla sezione in Tutorial Java per caricare icone per la tua applicazione . La stessa sezione discute molti punti sollevati da TofuBeer e John .

MODIFICA: L'uso dell'API File non è raccomandato perché finisce per leggere il file system locale. Ciò è inaccettabile per la maggior parte degli utenti su Internet.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top