Archive

Archive for the ‘Java’ Category

LiveConnect y Linux (2)

febrero 9, 2015 Deja un comentario

Después de unos días, me comenta Jaime Hablutzel que existe una forma de que funcione con las últimas versiones de Java. La solución es ir al Java Control Panel y en Java Runtime Environment Settings añadir el parámetro:

 -Djnlp.nativeMixedCodeDialog=false

Aquí una captura de pantalla:

LiveConnect

Categorías:Debian, Java, Ubuntu Etiquetas: , , , , ,

LiveConnect y Linux

febrero 5, 2015 Deja un comentario

Resulta que el problema del LiveConnect ocurre sólo en Linux. Consiste en que no se puede hacer una llamada desde Javascript a un método del Applet. Afecta, por ejemplo, al LiveEdit de OpenKM. Para que funcione desde Linux, o instalas el OpenJDK y el plugin para el navegador IcedTea o tienes que usar el JDK de Oracle 1.7u67. A partir de esa versión ya no funciona.

Instrucciones de instalación:

  $ sudo apt-get purge openjdk* icedtea* oracle-java*
  • Crear directorio de instalación:
  $ sudo mkdir /usr/local/java
  • Descomprimir el JDK:
  $ sudo tar xzvf Descargas/jdk-7u67-linux-x64.tar.gz -C /usr/local/java/
  • Poner los comandos del JDK en el PATH; añade al final del fichero /etc/profile esto:
  export PATH=$PATH:/usr/local/java/jdk1.7.0_67/bin
  • Instalar plugin en Firefox (y Chrome):
  $ cd /usr/lib/mozilla/plugins
  $ sudo ln -s /usr/local/java/jdk1.7.0_67/jre/lib/amd64/libnpjp2.so .

A partir de ahora funcionará sin problemas. A la espera de una solución definitiva por parte de Oracle.

 

Categorías:Debian, Java, Ubuntu Etiquetas: , , , , ,

Cambio en caliente de clases en Tomcat con IntelliJ

marzo 18, 2014 Deja un comentario

De acuerdo con su página, la DCEVM (Dynamic Code Evolution Virtual Machine – Máquina Virtual de Evolución de Código Dinámico) es una modificación de máquina virtual de Java HotSpot (TM) que permite cambios de las clases cargadas en tiempo de ejecución. Las máquina virtual que solemos usar permite cambios en el cuerpo de los métodos, pero no añadir nuevos métodos o cambiar la definición de los mismos.

Cuando estás desarrollando es bastante habitual que tengas que cambiar la implementación de una clase, y muchas veces ese cambio hace que debas parar el servidor de aplicaciones y arrancarlo de nuevo para que los cambios surtan efectos. Dependiendo de la complejidad de la aplicación, estos tiempos de parada e inicio pueden ser relativamente largos y aburridos. Gracias a DCEVM el esperar se va a acabar 🙂

Sé que existe otros métodos para conseguir este mismo objetivo, como JRebel que funciona bastante bien. De hecho se publicita argumentando que estos tiempos de reinicio cuestan dinero a la empresa que mediante su solución ahorra dinero. No tengo nada en contra de JRebel, pero DCEVM funciona realmente bien y además es gratis 😛

Desde hace unos meses uso IntelliJ, de modo que explicaré cómo configurarlo para usar esta máquina virtual alternativa. Vamos a File > Settings > Plugins, clickamos en Browse repositories y buscamos “DCEVM integration”. Una vez instalado debemos reiniciar el IDE. Al iniciar IntelliJ nos mostrará un mensaje “DCEVM is avaiblable fro your environment: Would you like to download it?” para decirnos que existe una versión disponible de DCEVM y si la queremos bajar. Obviamente, si que queremos.

Una vez bajada, vamos a la configuración de Tomcat (Edit Configuration…) y en la solapa Startup/Connection seleccionados Debug y añadimos la variable JAVA_HOME con la ubicación local de DCEVM. En la solapa Server seleccionamos Update classes and resources para la opción On frame deactivation.

Ahora cuando arranques Tomcat en modo debug podrás hacer las modificaciones que quieras sin tener que reinciarlo.

Categorías:Java Etiquetas: , ,

Crear un repositorio de Maven

mayo 7, 2010 2 comentarios

Desde que uso Maven evito, siempre que puedo, incluir los jar de las dependencias en el proyecto. Un buen sitio donde localizar estas dependencias es http://mvnrepository.com/. A veces un proyecto mantiene su propio repositorio de Maven, como es el caso de JBoss, y tienes que registrarlo en el pom.xml:

<repository>
  <id>jboss.com</id>
  <name>JBoss Maven Repository</name>
  <url>http://repository.jboss.com/maven2</url>
</repository>

Pero no siempre pueden encontrar las librerías que necesitas en un repositorio de Maven. En en ese caso puede optar por incluirlas en el fuente de la aplicación y registrarlas manualmente:

$ mvn install:install-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar

O puedes crear tu propio repositorio. En este caso hay distintas herramientas que te ayudarán en la tarea, como Nexus. Pero si eres amante de las cosas sencillas te gustará saber que con un simple servidor web también puedes hacerlo.

Para empezar creamos un usuario al que llamaremos “maven” y en su $HOME también vamos a crear los directorio “repository” y “repository/maven2”. Le tendremos que dar los permisos de lectura pertienentes a Apache porque se encargará de servir las librerías. Por tanto daremos de alta un VirtualHost para tener acceso al repositorio:

<VirtualHost *>
  DocumentRoot /home/maven/repository
  ServerName repository.monkiki.org
</VirtualHost>

Mientra, en nuestro ordenador local hay que editar el fichero ~/.m2/settings.xml para establecer las credenciales que nos permitirán registrar librerías en el repositorio que acabamos de crear.

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>/home/monkiki/.m2/repository</localRepository>
  <servers>
    <server>
      <id>monkiki.org</id>
      <username>maven</username>
      <password>s3cr3t0</password>
    </server>
  </servers>
</settings>

Podemos ir incluyendo librerías así:

$ mvn deploy:deploy-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar -Durl=scp://repository.monkiki.org/home/maven/repository/maven2 -DrepositoryId=org.monkiki

En caso de que la librería tenga dependencias, es buena praxis indicar en el registro el pom de dicha librería para que Maven gestione correctamente estas dependencias transitivas, en lugar de tener que incluirlas artificialmente en el pom.xml de nuestro proyecto. Para ello se utiliza el parámetro:

-DpomFile=/path/to/pom.xml

En los pom.xml de nuestros proyectos, hemos de registrar repositorio de esta manera:

<repositories>
  <repository>
    <id>monkiki.org</id>
    <name>Mi repositorio de maven particular</name>
    <url>http://repository.monkiki.org/maven2</url>
  </repository>
</repositories>

Y esto es todo, amigo!

Ver también:

Categorías:Java, Ubuntu

Personalización de campos en Mantis

marzo 12, 2010 7 comentarios

Mantis es un gestor de bugs (bugtracking system) escrito en PHP que llevo usando desde hace años. Visualmente no es gran cosa pero funciona realmente bien y es lo bastante flexible como para adaptarse a las necesidades que he ido teniendo. Últimamente lo he configurado para añadir un nuevo campo a los bugs que se van reportando en el gestor documental OpenKM.

Vamos a Manage > Manage Custom Fields. En el input escribimos el nombre del nuevo campo que en este caso sería Browser. Saltará a una nueva página en la que podemos describir los parámetros del este campo, como el tipo, posibles valores, etc. Elegimos el tipo Enumeration porque queremos que sea un desplegable desde donde el usuario podrá seleccionar el nombre del navegador. Así agilizamos la entrada de datos y eliminamos posibles errores de escritura. Y dentro de posibles valores escribe:

|Firefox|Explorer|Chrome|Safari|Opera

Como ves, los distintos valores se separan por el carácter pipe. El primero al no haber nada representa el valor vacío. El resto de opciones las podemos dejar tal y como están.

Un poco más abajo hay otro formulario que permite ligar este campo a un proyecto. De esta forma cada proyecto puede tener sus propios campos personalizados. Este campo aparecerá por defecto al final. Si nos va bien así ya hemos acabado, pero si eres un poco quisquilloso y quieres que aparezca esta nueva columna en el listado de bugs tendrás que sequir leyendo.

Vamos a Manage > Manage Configuration. Como quiero que esta personalización esté para todo el mundo, el parámetro Username lo pongo a “All Users”. En Project Name puedo elegir que se aplique a un sólo proyecto o a todos. Esto ya depende de cómo te lo quieras montar.

Por defecto los valores son:

array ( selection, edit, priority, id, sponsorship_total, bugnotes_count, attachment, category_id, severity, status, last_updated, summary )

Y como quiero que haya una nueva columna con el tipo de navegador, en Configuration Option pones “view_issues_page_columns” y en Value esto:

array ( selection, edit, priority, id, sponsorship_total, bugnotes_count, attachment, category_id, custom_Browser, severity, status, last_updated, summary )

Puedes encontrar más información sobre configuración de Mantis en su manual online.

Categorías:Java, Ubuntu

El blog and.roid.es cumple un año

octubre 15, 2009 Deja un comentario

Estamos de cumpleaños. El blog and.roid.es que tantas noticias sobre Android nos trae a los mortales celebra su primer años de existencia. Para festejarlo regala un HTC Magic Negro.

No te lo puedes perder!

Categorías:Android, Java

Dependencias en maven

septiembre 25, 2009 Deja un comentario

Es malo incluir la libraría log4j.jar en una aplicación deployada en JBoss por ya la trae él y hay temas de classpath. Vamos, que se hace un follón con las dos versiones.

Especial cuidado hay que tener por las dependencias transitivas de maven: tu no la incluyes a posta en el pom.xml de tu projecto pero se cuela en el war porque forma parte de una dependencia de otra librería que necesitas.

Te puedes volver loco buscando qué dependencia es es culpable de que se incluya esa librería. Pero hay una solución perfecta para ello:

$ mvn dependency:tree

Esto muestra todo el árbol de dependencias y podrás ver de dónde cuelga. Luego simplemente tienes que añadir la exclusión de dicha librería en la dependencia maligna:

<exclusions>
  <!-- JBoss already have its own log4j.jar -->
  <exclusion>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
  </exclusion>
</exclusions>
Categorías:Java Etiquetas: