verificar descargar java

descargar - ¿Cómo funciona la importación de Java?



java offline (5)

Me gustaría saber cómo funciona el extracto de import .

Pregunto esto porque tengo las siguientes imports en mi proyecto:

import static com.googlecode.javacv.jna.highgui.cvCreateCameraCapture; import static com.googlecode.javacv.jna.highgui.cvGrabFrame; import static com.googlecode.javacv.jna.highgui.cvReleaseCapture; import com.googlecode.javacv.CanvasFrame; import com.googlecode.javacv.FrameGrabber; import com.colorfulwolf.webcamapplet.gui.ImagePanel; import com.googlecode.javacv.OpenCVFrameGrabber; import com.googlecode.javacv.jna.cxcore.IplImage;

No tengo estos paquetes en mi proyecto, entonces, ¿cómo se importará esto?

Si creo un archivo JAR con todas mis clases, mi servidor donde alojará este archivo JAR, ¿tiene que tener acceso gratuito a Internet para obtener este package ?

Tengo un problema en mi Applet que tiene estas importaciones, y estoy haciendo esta pregunta, para entender si puede ser una regla de Internet.

<applet code="com.colorfulwolf.webcamapplet.WebcamApplet" archive="http://san.redenetimoveis.com/teste.jar, http://san.redenetimoveis.com/core.jar, http://san.redenetimoveis.com/javacv.jar, http://san.redenetimoveis.com/javase.jar, http://san.redenetimoveis.com/jna.jar, http://san.redenetimoveis.com/customizer.jar, http://san.redenetimoveis.com/jmf.jar, http://san.redenetimoveis.com/mediaplayer.jar, http://san.redenetimoveis.com/multiplayer.jar, http://san.redenetimoveis.com/sound.jar" height="550" width="550"> </applet>


En los lenguajes dinámicos, cuando el intérprete import s, simplemente lee un archivo y lo evalúa.

En C, el enlazador ubica las bibliotecas externas en tiempo de compilación para construir el objeto final si la biblioteca está compilada estáticamente , mientras que para las bibliotecas dinámicas se llama una versión más pequeña del enlazador en tiempo de ejecución que reasigna las direcciones y así hace que el código en la biblioteca esté disponible al ejecutable.

En Java, el compilador simplemente utiliza la import para permitirle asignar un nombre a sus clases por su nombre no calificado, digamos String lugar de java.lang.String . Realmente no necesita importar java.lang.* Porque el compilador lo hace de forma predeterminada. Sin embargo, este mecanismo es solo para ahorrarle algo de tipeo. Los tipos en Java son nombres de clase totalmente calificados, por lo que una String es realmente un objeto java.lang.String cuando se ejecuta el código. Los paquetes están destinados a evitar conflictos de nombres y permitir que dos clases tengan el mismo nombre simple , en lugar de confiar en la antigua convención C de tipos de prefijación como este. java_lang_String . Esto se llama espacios de nombres .

Por cierto, en Java existe la construcción de importación estática , que permite guardar aún más la escritura si utiliza muchas constantes de una determinada clase. En una unidad de compilación (un archivo .java) que declara

import static java.lang.Math.*;

puede usar el PI constante en su código, en lugar de hacer referencia a él a través de Math.PI , y el método cos() lugar de Math.cos() . Entonces, por ejemplo, puedes escribir

double r = cos(PI * theta);

Una vez que comprenda que las clases siempre se referencian por su nombre completo en el código de byte final, debe comprender cómo se carga realmente el código de clase. Esto ocurre la primera vez que se crea un objeto de esa clase, o la primera vez que se accede a un miembro estático de la clase. En este momento, el ClassLoader intenta ubicar la clase e instanciarla. Si no puede encontrar la clase, se ClassNotFoundException una ClassNotFoundException . Para ubicar la clase, ClassLoader normalmente verifica las rutas enumeradas en la variable de entorno $CLASSPATH .

Para resolver su problema, parece que necesita un elemento de applet como este

<applet codebase = "http://san.redenetimoveis.com" archive="test.jar, core.jar" code="com.colorfulwolf.webcamapplet.WebcamApplet" width="550" height="550" >

Por cierto, no es necesario importar los archivos en el JRE estándar.


Importar en Java no funciona en absoluto, ya que solo se evalúa en tiempo de compilación. (Trátelo como atajos para que no tenga que escribir nombres de clase completamente calificados). En tiempo de ejecución no hay importación en absoluto, solo FQCN.

En tiempo de ejecución, es necesario que todas las clases a las que hace referencia las puedan encontrar los cargadores de clases. (la infraestructura del cargador de clases a veces es oscura y muy dependiente del entorno). En el caso de un applet, deberá instalar correctamente su etiqueta HTML y también proporcionar los archivos JAR necesarios en su servidor.

PD: la coincidencia en tiempo de ejecución se realiza a través de nombres de clase calificados: la clase encontrada con este nombre no es necesariamente la misma ni es compatible con la clase contra la que compiló.


La declaración de importación de Java es azúcar sintáctico puro. la importación solo se evalúa en tiempo de compilación para indicar al compilador dónde encontrar los nombres en el código.

Puede vivir sin ningún extracto de importación cuando siempre especifica el nombre completo de las clases. Al igual que esta línea no necesita ninguna declaración de importación:

javax.swing.JButton but = new javax.swing.JButton();

La declaración de importación hará que su código sea más legible así:

import javax.swing.*; JButton but = new JButton();


Las clases que está importando deben estar en el classpath. Entonces, o los usuarios de su Applet tienen que tener las bibliotecas en el lugar correcto o simplemente proporciona esas bibliotecas incluyéndolas en su archivo jar. Por ejemplo, esto: la forma más fácil de combinar un lanzamiento en un archivo JAR


javac (o java durante el tiempo de ejecución) busca las classes se importan en el classpath . Si no están allí en el classpath entonces se classnotfound excepciones de classnotfound .

classpath es igual que la variable de path en un shell, que es utilizada por el shell para encontrar un comando o ejecutable.

Directorios enteros o archivos jar individuales pueden colocarse en el classpath . Además, sí, una classpath puede incluir un camino que no es local, pero que está en algún lugar de Internet. Por favor, lea más sobre classpath para resolver sus dudas.