Translate

viernes, 17 de octubre de 2014

Configurar el plugin de jasper reports en netbeans

Artículo en proceso...

Introducción

Apenas traté de descargar todos los plugins necesarios para hacer reportes de Jasper Reports y se instalan aparentemente sin problema, pero al momento de hacer un proyecto marcaba errores en las librerías. Resulta que las rutas estaban mal

Procedimiento

Para corregir ese error deberemos modificar la librería de la base de datos de librerías de netbeans.
Primeramente identificamos las librerías con error que deberán aparecen en rojo.
Los archivos de java jar deberán aparecer en la carpeta:
C:/Archivos de Programa/Netbeans 8.0/ireport/modules/ext
Alguna veces en versiones superiores una vez localizado el nombre desde netbeans damos click en el botón addJAR/Folder y buscamos el archivo en el díalogo que aparecerá.
Luego procederemos a eliminar el archivo que hemos agregado mediante el botón Remove del mismo menú.
Alguna librerías no se encontrarán, en mi caso fueron dos, y las bajé del sitio Java2s.
 Una vez resuelto este problema nuestra ventana se deberá de ver algo así, y los errores de compilación habrán desaparecido.


Explicación

Resulta que esa es la forma en que se estructuran las rutas de netbeans internamente, pero por alguna razón, no remplazaron bien y quedó una ruta relativa al momento de hacer el plugin. Esta colección de plugins cada vez es más viejo, y como son contribuidos por la comunidad, no hay código fuente, de manera que no se actualizan a las nuevas versiones de netbeans. Muchas de estas librerás tienden a desaparecer, pues incluso las que tenían su código en java.net por políticas de este sitio, serán removidas si no tienen actividad de desarrollo en el último año.

jueves, 2 de octubre de 2014

Error: "SQLException: Before start of result set"

Introducción


De vez en cuando seguro que nos toparemos con un error similar a este:
java.sql.SQLException: Before start of result set
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
    at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:855)
    at com.mysql.jdbc.ResultSetImpl.getInt(ResultSetImpl.java:2710)

Solución


La solución es muy simple, suponiendo que el result set se obtenga en la variable resultados, entonces bastaría con poner un:
resultados.next();

Explicación

En Java los result sets se obtienen en el índice 0, por ello para poder obtener la información debemos recorrerlo a el índice 1. Esto se hace mediante la llamada al método next de la clase ResultSet instanciando a la clase, pues no es un método estático.

lunes, 22 de septiembre de 2014

Error: Duplicate entry '1-1' for key 'PRIMARY' en MySQL

Introducción


Apenas hace poco conectándome con una base de datos en Java me salió el error:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '1-1' for key 'PRIMARY'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1816)
    at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1730)


Ustedes pudieran tener algo similar  si ejecutan algo como
Insert into usuario_has_mesa values('" + idusuario + "','" + numeroDeMesa + "')"

Solución


Cambiar agregando la palabra IGNORE
Insert IGNORE into usuario_has_mesa values('" + idusuario + "','" + numeroDeMesa + "')"

Explicación


A pesar de que es una modificación muy simple, le estamos indicando al sistema que no trate de insertar nuevos registros si la base de datos ya tiene alguno con la misma clave principal. Esto básicamente nos servirá para evitar llenar datos duplicados o para evitar llenar mal nuestra base de datos.

domingo, 14 de septiembre de 2014

Corrección de error en Java java.lang.UnsupportedClassVersionError

Introducción 


Puede suceder que cuando alguien nos comparta un código nos encontremos con un error similar a este:
java.lang.UnsupportedClassVersionError: GUI/VentanaAdministracion : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) at java.lang.ClassLoader.defineClass(ClassLoader.java:616) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) at java.net.URLClassLoader.access$000(URLClassLoader.java:58) at java.net.URLClassLoader$1.run(URLClassLoader.java:197) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at ... etc etc

Solución 

Si el código es un proyecto de Netbeans, la solución será simple,  seleccionar nuestro proyecto, darle click derecho y propiedades.
En la opción Sources bajamos la versión de JDK con la que se compilará. Para este caso, la versión 51 es el JDK 7.


Si no se cuenta con netbeans, y tras borrar los archivos .class e intentar compilar de nuevo sale el mismo error,  se deberá ajustar el script ANT con el que se compila, o descargar la versión más reciente del Java Developer Kit

Explicación

El código nos marca ese error porque la persona que lo hizo tenía un compilador en una versión más reciente a la nuestra. Posiblemente habrá errores de código, como por ejemplo en el caso presentado los milticatch marcaban error porque son una característica del JDK 7.

miércoles, 20 de agosto de 2014

jQuery: El remplazo con selectores no funciona

Introducción

Algunas veces sucede que los códigos que copiamos para jQuery de Internet no corren, y especialmente para aquellos que han programado con php tienen estos problemas.
Les pondré un pequeño ejemplo:

<!DOCTYPE html>
<html>
   <head>

   </head> 
   <body>
      <script type="application/x-javascript">
          $(document).ready(function(e) {
                 $('#Bienvenida').html('Bienvenido ');
         });
       </script>
      <h1 id="Bienvenida"></h1>
   </body>
</html>


Solución


A pesar de lo sencillo que suene,  la mayor parte de los problemas se soluciona colocando el código en la sección de encabezado.

<!DOCTYPE html>
<html>

    <head>
      <script type="application/x-javascript"> 
         $(document).ready(function(e) {
                 $('#Bienvenida').html('Bienvenido ');
          });      </script> 

    </head>
    <body>
      <h1 id="Bienvenida"></h1>
   </body>
</html>




Explicación


Los scripts realizados con el lenguaje javascript, especialmente aquellos hechos con jQuery deben incluirse en la sección head de nuestro documento. Nuestros scripts son precargados al servidor para aumentar su velocidad, a diferencia de PHP, dnde se tiene que procesar todo en conjunto para poderlo ejecutar.

lunes, 18 de agosto de 2014

Como borrar texto en Netbeans con expresiones Regulares

Introducción

Algunas veces encontramos códigos en internet que aún traen los números de línea en un formato muy predecible, para deshacernos de ellos de manera rápida les enseñaré un pequeño truco.

Ejemplo

Necesitaremos ir al menú Edit > Replace. O simplemente Control + H
Deberemos escribir en el primer campo nuestra expresión regular, en mi caso: "[0-9][0-9]\."
posteriormente damos click en la opción Remove all.



Explicación

Como netbeans está hecho en Java, deberemos usar la sintaxis de Java para expresiones regulares. En este partucilar caso [0-9] significa un número del 0 al 9, y \. significa el caracter de punto.