Mostrando entradas con la etiqueta error. Mostrar todas las entradas
Mostrando entradas con la etiqueta error. Mostrar todas las entradas

lunes, 31 de octubre de 2011

Problema de dependencias "Cannot compile against a module..." en NetBeans Platform

Hola.

En la semana me enteré de un componente curioso llamado Sticky Note vía el blog de Geertjan e intenté ejecutar el ejemplo de Geertjan:
como sea, el caso es que intenté compilar su ejemplo para probarlo y la sorpresa esta vez fue algo como esto:

Cannot compile against a module: .....\org-netbeans-modules... org-netbeans-api-visual.jar because of dependency: org-netbeans-api-visual.jar > 3.x.x

y me enviaba a alguna parte del archivo build.xml [harness]. Además de que este problema se presentaba con cada dependencia en el módulo.

Pues resulta que la solución es muy sencilla, vamos nuestro proyecto o módulo (Ctrl+1) click derecho sobre él -> Properties -> Libreries -> Modules Dependencies y eliminamos todas las dependencias y las volvemos a agregar, damos aceptar, Clean and Build All y listo, ahora si a probar la Sticky Note Sidebar.

Otra vez un problema que se soluciona fácilmente, pero lo pongo porque me tardé un buen rato para solucionarlo.

Fuente.


domingo, 30 de octubre de 2011

Problema "Java heap space" en aplicación Netbeans Platform

Hola.

En estos días he estado desarrollando sobre Netbeans Platform porque hace magia  y el caso es que mientras ejecuto mi proyecto desde Netbeans IDE no existe problema alguno, entonces piensas: voy a generar mi instalador y a probar lo que llevo a ver si de verdad sirve esa opción que dice Package as -> Installers, así, ejecutas tu aplicación y se congela/traba/valequeso y no entiendes porque si todo iba tan bien. En este punto como buenos programadores que somos ¡ajá!, sícomo no recordamos las leyes de Murphy y mejor ejecutamos desde terminal para llevarnos la siguiente sorpresa:


java.lang.OutOfMemoryError: Java heap space

Googleando un poco nos enteramos que este error se produce cuando la JVM se queda sin memoria (de almacenamiento dinámico/ de intercambio) y además que por default el tamaño de la memoria es de 64MB (sobre Java 6). La forma de asignar tamaño a la memoria es con los siguientes parámetros de la JVM:
-Xms128m  // Como mínimo 128 MB
-Xmx512m  // Como máximo 512 MB
-Xmx1G    // Como máximo 1 GB

esto solo es parte de lo que necesitamos ya que el usuario no va a ejecutar la aplicación desde terminal pasándole algunos de los argumentos de arriba.
Buscando otro poco encontramos que la solución es modificar el script de creación Build Script que se encuentra en (Ctrl+1) Projects -> MiProyecto -> Important Files -> Build Script o en el directorio del proyecto MiProyecto -> build.xml, en este momento tenemos algo como esto:
<?xml version="1.0" encoding="UTF-8"?>
<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
<!-- for some information on what you could do (e.g. targets to override). -->
<!-- If you delete this file and reopen the project it will be recreated. -->
<project name="MiProyecto" basedir=".">
    <description>Builds the module suite MiProyecto.</description>
    <import file="nbproject/build-impl.xml"/>    
</project> 
y agregamos las siguientes líneas

<!-- Modifies the default settings for JVM (ANTES DEL CIERRE DE la etiqueta project)-->
<target name="build-launchers" depends="suite.build-launchers">
<replace file="build/launcher/etc/${app.name}.conf" token="--branding miproyecto -J-Xms24m -J-Xmx64m" value="--branding miproyecto -J-Xms128m -J-Xmx512m"/>
</target>
<!-- Modifies the default settings for JVM -->

obviamente deben cambiar miproyecto por el nombre de su proyecto (en minúculas), además pueden cambiar -J-Xms128m -J-Xmx512m según sus necesidades. Ahora sí, generamos instaladores, ejecutamos nuestra aplicación y problema resuelto.

También podría interesarnos asignar tamaño a la memoria cuando ejecutamos nuestra aplicación desde NetBeans IDE:

How to pass command line arguments to a NetBeans Platform application when run inside the IDE