2011-05-10 14 views
11

Uso la versión de Firefox> 3.5 (3.5. , 3.6., 4. *) E intento especificar la propiedad archive y codebase correctamente pero no funciona. Mi clase principal para applet se encuentra en el archive y algunas clases necesarias que se cargan durante el tiempo de ejecución se encuentran en el codebase. Si especifico solo el archive, se carga el applet pero faltan las clases de codebase. Si especifico el archive y el codebase, entonces el applet no se puede cargar. Parece que Applet intenta cargar la clase principal desde la carpeta codebase y no mira en el archivo archive.¿Cómo especificar correctamente la base de código y el archivo en el applet de Java?

<html>  
<body> 
<applet width=600 height=300 code="MyClass.class" 
    type="application/x-java-applet;jpi-version=6" 
    archive="http://myurl.com/archive/myjar.jar" 
    codebase="http://myurl.com/classes"> 
    no applet 
</applet> 
</body>  
</html> 

Clase principal se encuentra en http://myurl.com/archive/myjar.jar y clases de ejecución están situados en http://myurl.com/classes.

+2

Muéstranos tu corta pero completa HTML ejemplo, junto con una descripción de la estructura del directorio que contiene cada uno de los recursos. –

+0

Hay una opción (con una etiqueta 'param' dentro de la etiqueta' applet') para desactivar 'codebase'. Creo que el antiguo MRJ en la Mac siempre ignoró el 'codebase' si tuvieras un' archive'./No estoy seguro si el 'codebase' requiere un'/'posterior. –

Respuesta

22

El atributo codebase especifica la URL base del applet, el directorio que contiene el código del applet. Se utiliza durante la búsqueda de archivos jar en el atributo archive, de forma que se buscan todos los archivos jar en el atributo archive en relación con codebase.
So. Cuando utiliza archive="http://myurl.com/archive/myjar.jar" y codebase="http://myurl.com/classes" juntos, significa: encuentre "http://myurl.com/archive/myjar.jar" en "http://myurl.com/classes" carpeta.
I.e. la ruta de búsqueda completa es "http://myurl.com/classes/http://myurl.com/archive/myjar.jar". ¡Y por supuesto no se puede encontrar!
Además, las clases cuyos archivos jar no se especifican en el atributo archive no se pueden encontrar sin el atributo codebase. Es decir. si no hay codebase, entonces no hay forma de encontrar sus clases en "http://myurl.com/classes" carpeta.

Puede encontrar más detalles en el tutorial Deploying With the Applet Tag.

que sugieren la siguiente solución :

  1. Lugar myjar.jar en la carpeta http://myurl.com/classes;
  2. Asumiendo que su MyClass.class está en predeterminado paquete, y en el "http://myurl.com/archive/myjar.jar", el siguiente código debería funcionar:

<html>  
<body> 
<applet width=600 height=300 code="MyClass" 
    type="application/x-java-applet;jpi-version=6" 
    archive="myjar.jar" 
    codebase="http://myurl.com/classes"> 
    no applet 
</applet> 
</body>  
</html> 
+1

Gran respuesta. :) Re. 'classes' directorio. Encuentro eso confuso y prefiero 'lib' (que también es más corto;)). La aplicación 'type ="/x-java-applet; jpi-version = 6 "' también me recordó a ['deployJava.js'] (http://docs.oracle.com/javase/6/docs/technotes/ guides/jweb/deployment_advice.html # deplToolkit) para manejar los detalles desagradables de decidir exactamente qué escribir de acuerdo con el navegador (y la versión del navegador) y el sistema operativo. –

+0

el directorio 'classes' fue sugerido solo para dar la solución más rápida en las condiciones dadas. :) Por supuesto, el directorio 'lib' se debe usar en su lugar. – MockerTim

+0

* "dar la solución más rápida en determinadas condiciones" * Si el asunto fuera "servicio dentro de las 6 horas", el OP no podría tener ninguna queja. ;) Tu respuesta inmediatamente (1) obtuvo mi +1. :) 1) Bien 'inmediatamente' después de que lo vi y, probablemente, antes de hacer el comentario. –

Cuestiones relacionadas