Java Persistence API Tools (1.0.0.v200706250000-77–CYQCCz-CoRPCCCH) requires feature “org.eclipse.datatools.enablement.feature”

July 12th, 2007 by pablocia

Con la nueva versión de Eclipse3.3 para J2EE que se puede descargar de la página
http://www.eclipse.org/downloads/moreinfo/jee.php,
parece que hay problemas al intentar hacer nuevas actualizaciones, lo que hace que el botón “Select Required…” no funcione y sea imposible evitar el error

Java Persistence API Tools (1.0.0.v200706250000-77–CYQCCz-CoRPCCCH) requires feature “org.eclipse.datatools.enablement.feature”

Para solucionarlo tendremos que añadir dos paquetes llamados Data Tools Enablement y Data Tools Documentation que están en el sitio de actualización llamando “Data Tools”.

Ant - junit, build failed= Could not create task or type of type junit

June 20th, 2007 by pablocia

Hace unos días me he estado peleando con una tarea ant en Eclipse que pretendía ejecutar un test de JUnit. Es raro, ;) pero daba el siguiente error, aunque compilaba bien las clases.

BUILD FAILED
...: Could not create task or type of type: junit.
Ant could not find the task or a class this task relies upon.

Para solucionar este error, necesitas copiar el archivo JUnit.jar a la carpeta eclipse/plugins/org.apache.ant/lib.

Luego en Eclipse vamos al menú Window->Preferences->ant->Runtime, seleccionamos Ant Home Entries (Default).

Por último, hacemos click en el botón Add External JARs y buscamos el archivo junit.jar que acabamos de copiar. Aceptamos los cambios, y con esto debería estar solucionado.

Error ClassClastException al añadir un objeto a un TreeMap

April 20th, 2007 by pablocia

Es un error de los que pueden hacer dar muchas vueltas, porque en el mensaje de error no aparece clara la causa. En este caso el problema es que estamos intentando añadir a un TreeMap un objeto que no implementa la interface Comparable y que por lo tanto no tiene implementado el método compareTo(), necesario para que el TreeMap pueda ordenar sus objetos.

En la imagen se muestra el error que se produce al intentar añadir al treeMap a la segunda persona.

Error ClassCastException en un TreeMap

Error con la DLL de sistema user32.dll y HHCTRL.OCX

April 11th, 2007 by pablocia

Por culpa de una de las últimas actualizaciones de Windows Update, al arrancar el equipo, el panel de control de Realtek no se abre y aparece el siguiente error:

La DLL de sistema user32.dll se ha reasignado en la memoria La aplicación no funcionará correctamente. La reasignación ocurrió porque la DLL C:\Windows\System32\Hhctrl.ocx ocupa un intervalo de direcciones reservado para las DLL del sistema de Windows. Debe ponerse en contacto con el fabricante que proporciona la DLL para obtener una nueva.

La explicación al problema y su solución está en la siguiente página:

http://support.microsoft.com/kb/935448/es

También tuve problemas con Eclipse 3.3

April 5th, 2007 by pablocia

Pues va a ser que sí.

Resulta que estoy buscando un plugIn de UML para Eclipse con las siguientes características:

  • La más importante: gratuito
  • Otra muy importante, que permita ingeniería inversa.
  • Que soporte la mayor parte de diagramas UML, no solo de calses.

Encontré uno perfecto y que es tan potente como sus hermanos comerciales, el Topcased, pero resulta que como requisitos necesito Eclipse 3.3, que está todavía está en desarrollo.

Pues nada, lo bajo, lo instalo y cual es mi sorpresa, al intentar actualizarlo con Callisto para bajar el WTP, no aparece la opción de Callisto. Enredando un poco por la red, me entero de que esta versión no permite desarrollo de aplicaciones J2EE. Habrá que esperar a que saquen la versión definitiva.

Actualización 05 de Julio de 2007

Hace unos días ha salido Eclipse 3.3 Europa, que ya corrige los problemas que comenté anteriormente. De todas formas siguen los problemas con Topcased, porque no puedo generar diagramas UML a partir de las clases java. Así que sigo intentándolo…

Utilizar oc4j con Eclipse

March 31st, 2007 by pablocia

¿Será posible que cada vez que intentemos instalar cualquier cosa lo normal sea que no funcione?.

Esta vez los problemas han surgido al intentar añadir el servidor de Oracle a Eclipse, que en principio es sencillo, se añade como todos los demás, sin embargo cuando intentaba arrancar el servidor aparece un error:
java.lang.RuntimeException: Could not generate DH keypair

Error en Eclipse al iniciar oc4j

Después de mucho rebuscar por la red encontré que la causa de estos errores era un bug en el jdk que estaba utilizando, el jdk1.5.0_05, que se corrige en las actualizaciones posteriores a la 10.

Así que si no os funciona oc4j dentro de Eclipse, probablemente sea porque tenéis que actualizar el jdk de Java.

Error al iniciar JBoss desde Eclipse 3.2.1

September 10th, 2006 by pablocia

Para variar, otro error más!. Esta vez al instalar JBoss e intentar arrancarlo desde dentro de Eclipse, resulta que nada que no funciona. ¿Sabéis cuál ha sido la causa esta vez? Pues que instalé JBoss en C:\Archivos de Programa, y la solución es instalarlo en un path sin espacios en blanco… por qué no avisarán… ein?

Utilizar Expresion Language con Struts

March 26th, 2005 by pablocia

Supongo que no me habrá pasado a mí solo, pero me ha llevado algún tiempo y sus correspondientes quebraderos de cabeza, descubrir cómo se utiliza el Lenguaje de Expresión con Struts.

Si tuviéramos un .jsp que recorre una lista de libros almacenada en el request, el código con EL sería el siguiente:

<c:forEach var="fila" items="${sessionScope.seleccion}">
<tr>
<td>${fila.value.id_libro}</td>
<td>${fila.value.titulo_libro}</td>
<td>${fila.value.nom_autor}</td>
<td>${fila.value.nom_editorial}</td>
<td>${fila.value.ed_libro}</td>
<td>${fila.value.anyo_libro}</td>
<td>${fila.value.precio_libro}</td>
</tr>
</c:forEach>

Y si no configuramos las páginas para utilizar LE, lo que se vería en un navegador serían las expresiones en lugar de sus valores:
${fila.value.precio_libro}${libro.id_libro} ${libro.titulo_libro} ${libro.nom_autor} ${libro.nom_editorial} ${libro.ed_libro} ${libro.anyo_libro} ${libro.precio_libro}
El problema aparece cuando intentamos utilizar EL con las versiones 1.2.x de Struts y anteriores, ya que éstas utilizan por defecto la versión 2.2 del descriptor de despliegue web.xml:

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

Una forma de solucionarlos sería cambiar a la versión 2.3, pero también tendríamos que cambiar otras cosas como el orden de las etiquetas en el archivo web.xml y algunas cosillas más.

Si queremos continuar con la versión 2.2, la solución es añadir el atributo isELIgnored=”false” en la directiva page de los jsp donde queramos utilizar EL, tal como se puede ver en el ejemplo

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" isELIgnored="false"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Probando LE</title>
</head>
<body>
<table>
<c:forEach var="fila" items="${sessionScope.seleccion}">
<tr>
<td>${fila.value.id_libro}</td>
<td>${fila.value.titulo_libro}</td>
<td>${fila.value.nom_autor}</td>
<td>${fila.value.nom_editorial}</td>
<td>${fila.value.ed_libro}</td>
<td>${fila.value.anyo_libro}</td>
<td>${fila.value.precio_libro}</td>
</tr>
</c:forEach>
</table>
</body>
</html>

Otro problema que podemos tener es cuando intentamos introducir una expresión EL dentro de una etiqueta de struts, como <logic:iterate>.Para evitarlo tendremos que hacer lo siguiente:

  1. Las etiquetas de struts en las que se pueden incluir este tipo de expresiones pertenecen a los tld que acaban en -el: struts-html-el.tld, struts-logic-el, etc. Estos archivos tld están en la distribución de struts, en la carpeta struts.1.2.x/contrib/struts-el/lib.
    Distribución Struts 1.2.x
    Así que tendremos que modificar el archivo web.xml para que se utilicen estos tlds.
  2. Además deberemos añadir al build path de nuestro proyecto, el archivo struts-el.jar que también está en dicha carpeta.
  3. Por último, esto no funciona si nos olvidamos de incluir en el build path, los archivos jstl.jar y standar.jar del JSTL.

En el IDE Eclipse, todo esto es relativamente sencillo ya que sólamente tendremos que copiar los archivos .jar a la carpeta WEB-INF/lib de nuestro proyecto y los .tld a la carpeta WEB-INF.