Ejecución indirecta/remota de aplicaciones Java

Exception in thread “main” java.lang.InternalError: Can’t connect to window server – not enough permissions.

El error anterior, oculto en el log de Apache HTTP Server, generado al intentar ejecutar Apache FOP desde PHP para generar informes para un proyecto que estoy desarrollando con Cx Networks, me mantuvo varios minutos preocupado y buscando soluciones para el problema.

Al principio parecía un simple problema de permisos de archivo. Pero tras tomar las acciones comúnmente necesarias (el ya conocido modo diabólico), todo parecía ir de mal en peor. Y es que estaba por maldecir a Steve por hacerme perder el tiempo; ya que en los servidores de Cx Net (Linux) todo funcionaba bien, pero en mi Macbook sólo veía el error en cuestión.

Tras investigar un rato en la Internet (por estos días Google), encontré que el problema se generaba por la imposibilidad de la máquina virtual de Java de acceder a ciertos dispositivos de interfaz humana como el mouse, el display o el teclado. Al parecer esto ocurre cuando llamamos indirectamente a la aplicación Java. Por ejemplo con un usuario que no tiene acceso a una shell como www de Apache (o _www en Mac OS X). También podríamos enfrentarnos a esta situación cuando ejecutamos un proceso Java de manera remota a través de SSH.

La solución es más simple de lo esperado. Al ejecutar el proceso Java, debemos indicar que estamos en un ambiente headless (sin mouse, teclado o pantalla). Para lo anterior, utilizamos el siguiente argumento:

-Djava.awt.headless=true

Para más información sobre el modo headless, les invito a visitar el siguiente enlace:

http://java.sun.com/j2se/1.4.2/docs/guide/awt/AWTChanges.html#headless

Publicado en Español,Java,Linux,Mac,PHP 5,Programación | Comments off

Gnome Do: simple, elegante, rápido.

DoCómo olvidar aquellos tiempos en los que trabajabamos sólo con la línea de comandos (Terminal), teníamos que compilar y recompilar el kernel, iniciabamos las X tipeando startx, programabamos usando VIM, etc. Los tiempos han cambiado y, aunque algunos todavía seguimos haciendo cosas como las que mencioné anteriormente, tenemos a nuestra disposición un sin número de interfaces y aplicaciones que nos facilitan la vida.

Hoy, estamos en la era donde lo visual ha cobrado vital importancia. Las gráficas han traído consigo, en la mayoría de los casos, un aumento en la productividad. Ya  no necesitamos pasar días (literalmente) instalando Gentoo desde la stage 1, compilando cada paquete (aunque debo admitir que era divertido); hoy se puede  instalar, como casi todas las distribuciones de GNU/Linux, desde un LiveCD en un par de pasos. No es necesario abrir multiples herramientas para poder desarrollar nuestra aplicación; tenemos IDEs como NetBeans o MonoDevelop, aunque algunos todavía insisten en programar Java en VIM y otros C# en Midnight Commander.

Leer el resto de esta entrada »

Publicado en Linux,Mono,Reviciones,Software Libre | 6 Comentarios

Sitios de interés