2011-02-09 29 views
6

Encontré un código de Java y quiero usarlo en mi proyecto. Contiene estas importaciones que mi JDK no tiene:com.sun.awt uso del paquete

import com.sun.awt.AWTUtilities; 
import com.sun.jna.Native; 
import com.sun.jna.platform.WindowUtils; 

me refería al sitio de sol y encontré esta página de descarga:

http://www.oracle.com/technetwork/java/javase/downloads/index.html

¿Es necesario descargar todo el JDK y JRE y reemplazarlo del sitio web de SUN? Mi JDK es la versión 6 y está actualizado.

gracias a todos

Respuesta

8

JNA es una biblioteca adicional y no es parte de la API estándar, debe descargarla (here) e incluirla en su classpath.

La clase AWTUtilities solo se distribuye con sun jvm como un detalle de implementación de la API y, como tal, sujeta a cambios, esto puede interrumpir cualquier programa que dependa de ella (de ser posible don't use it).

WindowUtils se puede encontrar en platform.jar, se puede encontrar en la misma página que jna.

+0

Gracias. ¿Pero sabes cómo puedo encontrar un archivo jar que contenga: com.sun.jna.platform.WindowUtils? Esto es importante para mí porque también quiero ejecutar mi código en Linux. – sajad

+0

@sajad actualizó mi respuesta. – josefx

3

No use cualquier paquete com.sun excepto como último recurso. Se consideran detalles de implementación y no forman parte de la API de JDK. Pueden cambiar arbitrariamente entre versiones, por lo que pueden causar problemas cuando intenta actualizar las versiones de JDK.

Las clases com.sun casi siempre están envueltas por clases "oficiales"; en su lugar, debe usarlas. Puede utilizar estos en una situación de último recurso, pero ya son parte de la descarga de JDK, por lo que no debe haber descarga adicional necesaria.

EDITAR: Parece que tiene razón, necesita descargar algunas jarras adicionales. El JNA jar está disponible en maven central (http://mvnrepository.com/artifact/com.sun.jna/jna/3.0.9). Especialmente si se trata de un fragmento de código que encontraste, te recomendaría no utilizar paquetes com.sun directamente.

+0

gracias. sí sobre com.sun.AWTUtilities. Pero import com.sun.jna.Native; com.sun.jna.platform.WindowUtils; Todavía son mi problema. Creo que tengo que agregar una biblioteca externa a mi proyecto. – sajad

+0

Sí jna 3.0.9 tiene com.sun.jna.Native; Pero ¿qué pasa con com.sun.jna.platform.WindowUtils ?? Esta clase tiene un método: WindowUtils.getAlphaCompatibleGraphicsConfiguration() que devuelve un Objeto GraphiConfigurations que se utiliza en mi código. También quiero ejecutar mi código en Linux. entonces esto es importante para mi ¿Es esta la última versión de jna? Gracias. – sajad

5

Su JDK debe tener com.sun.awt.AWTUtilities. Está en rt.jar.

Tal vez el problema (para ese archivo) es que su IDE excluye el padre de la ruta de compilación ... con el argumento de que es una mala idea usar esas clases directamente.

Las clases com.sun.jna no están en rt.jar. Aparentemente se pueden encontrar en un jna.jar, aunque aún no he encontrado un buen lugar desde donde descargarlo. (Si usa Maven, pruebe this.)

+0

gracias. sí sobre com.sun.AWTUtilities. Pero import com.sun.jna.Native; com.sun.jna.platform.WindowUtils; Todavía son mi problema. Creo que tengo que agregar una biblioteca externa a mi proyecto. – sajad

+0

@sajad - Creo que tú también. –

+0

@StephenC.Yo tuve el mismo problema. mi jre fue por defecto 1.6 solo en mi IDE. Pasé tanto tiempo para resolverlo, pero no pude. afortunadamente encontré tu respuesta. Tu consejo al 100% me ayudó y funcionó perfectamente para mí. Eres genio, excelente hombre perfecto. Todos los méritos para ti. Muchas gracias, mucho. Si pudiera, te suscribo 10000 veces. –

Cuestiones relacionadas