Aptitud Intuitiva

jueves, 26 de noviembre de 2009

javasci=Java+Scilab

Saludos, a continuación les presento un pequeño tutorial para usar javasci, interfaz entre scilab y una clase hecha en Java.

JAVASCI (Tutorial para MS Windows Xp y MS Windows Vista, próximamente publicaré el tutorial para linux)
1. Evidentemente, el primer paso consiste en instalar scilab (preferiblemente 5.1.1 - actual versión de scilab) y tener instalado el JDK (puede usar cualquier IDE Java, yo prefiero NetBeans6.7.1)
2. En el Panel de Control de Windows, seleccione SISTEMA->Opciones Avanzadas->Variables de Entorno


3. Una vez que ingrese a la ventana de modificación de las variables de entorno (tenga cuidado al manejar la información allí guardada, puede dañar la configuración de su MS Win) debe modificar la variable Path, añadiendo la ruta en la cual se encuentra el programa ejecutable de scilab (p.e: %todos las rutas del Path%;D:\sci\bin para este tutorial voy a suponer que scilab se encuentra instalado en D:\sci)
4. Añada o modifique CLASSPATH con la ruta donde se encuentra el archivo javasci.jar (p.e: D:\sci\modules\javasci\jar)
5. Las siguientes variables no existen en MS Win, por lo tanto debe añadirlas:
a. SCI (p.e: D:\sci)
b. SCI_DIABLE_TK (debe valer 1)
c. SCI_JAVA_ENABLE_HEADLESS (debe valer 1)
6. Escriba el siguiente programa de ejemplo en su IDE de preferencia:
import javasci.Scilab;
public class EjemploJavasci {
public static void main(String[] args) {
Scilab.Exec("t=0:0.001:1");
Scilab.Exec("y=cos(2*%pi*t)");
Scilab.Exec("plot2d(t,y)");
}
}
7. Si usa NetBeans debe añadir el archivo javasci.jar como biblioteca antes de ejecutar la clase antes mostrada.
8. Compile y ejecute el código Java antes mostrado y debería observar una ventana parecida a esta:

9. Si el compilador Java arroja algún error verifique los pasos anteriores y vuelva a ejecutar el programa.

Con javasci es posible aumentar el alcance de Scilab como software matemático y potenciar la capacidad de cálculo de Java.
Cualquier duda o comentario la puede hacer a través de éste medio, atentamente:

Ing. Manuel Pérez P.

17 comentarios:

  1. Buenas noches profesor, lo probé y me arrojo el siguiente error:

    java.lang.NoClassDefFoundError: ejemplojavasci/Main
    Caused by: java.lang.ClassNotFoundException: ejemplojavasci.Main
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:303)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:316)
    Could not find the main class: ejemplojavasci.Main. Program will exit.
    Exception in thread "main" Java Result: 1
    GENERACIÓN CORRECTA (total time: 0 seconds)

    ResponderEliminar
  2. Saludos, ese error sale cuando los nombres de las clases están mal definidos. Recomendación: como usa NetBeans, en el proyecto donde esté trabajando, seleccione un paquete (o cree uno nuevo) y seleccione crear una clase de java vacía, luego copie el código mostrado en el tutorial o cualquiera de los ejemplos que trae por defecto Scilab.

    ResponderEliminar
  3. disculpe, pero hace mucho tiempo que busco el javasci.jar y no lo encuentro para descargarlo, podría facilitarme este jar? desde ya muchas gracias

    ResponderEliminar
  4. Saludos, el paquete javasci.jar es provisto por la instalación de SciLab, puede buscarlo en la carpeta de instalación de Scilab una vez que instale dicho software en su equipo.

    ResponderEliminar
  5. estoy sumamente agradecido, no sabe el tiempo que llevo buscando ese jar, :P, en ningun lado dice eso, jaja, que vergüenza, Muchas Gracias

    ResponderEliminar
  6. Saludos, soy nuevo aqui jeje
    oie tengo una duda estoy usando el netbeans 6.8
    y scilab 5.2.1 pero ya declare las variables path y classpath como mencionaste pero me marca este error The native library javasci does not exist or cannot be found.
    java.lang.UnsatisfiedLinkError: no javasci in java.library.path

    ResponderEliminar
  7. Saludos l'amour, si es posible, me puedes enviar la ruta completa en la cual tienes instalado Scilab, la variable path y classpath que estas usando en su PC.

    ResponderEliminar
  8. Si mira en variables del sistema tengo:
    SCI =C:\Archivos de programa\scilab-5.2.1
    CLASSPATH=%SCI%\modules\javasci\jar;
    PATH=%SCI%\bin;
    Lo interesante es que con eclipse si me lo corre.

    y otro dato no se si ya habias checado es que viene unos ejemplos ahi en el javasci y tiene un make.bat y otro para ejecutarlos ahi vienen definidas las rutas tmb y si me corren el unico problema es el netbeans y bueno vaya me facilita mucho mas la vida ese IDE.

    oie y tengo otra duda haz de cuenta que kiero poner en un canvas alguna grafica que hace scilab es posible esto?...digamos plot(x,y) pero en vez de ke sea en una ventana independiente scilab sea en la misma de java.?

    pregunto mucho no xD

    ResponderEliminar
  9. Saludos l'amour, el valor de la variable SCI debe estar entre comillas, ya que la ruta lleva espacios y MS Win no interpreta correctamente la variable, en tu caso debe ser algo así:
    "SCI =C:\Archivos de programa\scilab-5.2.1"

    ResponderEliminar
  10. Puedes revisar otra entrada de este blog, donde uso canvas para graficar:
    http://jingmap.blogspot.com/2009/12/javasci-superlienzo-y-scifuncion.html

    ResponderEliminar
  11. K onda Ing. oie ya corrio, gracias .. para la otra sere mas cauteloso para esos detallitos.
    con esto :
    "C:\Archivos de programa\scilab-5.2.1"

    Por cierto son interesantes tus publicaciones.
    saludos y suerte.!!
    Hasta la proxima...

    ResponderEliminar
  12. Saludos Manuel, estoy desarrollando un modula para Scilab en java con eclipse, seguí los pasos que describes arriba pero sigue presentando un error al querer correr una aplicación sencilla el error es el siguiente:

    The native library javasci does not exist or cannot be found.
    java.lang.UnsatisfiedLinkError: no javasci in java.library.path

    Mis variables del sistema (Windows 7) son:

    1.- CLASSPATH = %SCI%\modules\javasci\jar
    2.- Path = todo lo demas%SCI%\bin;
    3.- SCI = "C:\Program Files\scilab-5.3.0"
    4.- SCI_DIABLE_TK = 1
    5.- SCI_JAVA_ENABLE_HEADLESS = 1

    Están tal cual se encuentran en mi sistema, de ante mano te agradezco tu colaboración.

    ResponderEliminar
  13. Saludos Miguel, Scilab5.3.0 contiene una nueva versión de javasci, la cual es probable que necesite algún tipo de configuración distinta para MSWindows (en el caso de GNU/Linux no cambia nada). Muchos de los ejemplos presentados aquí no funcionan correctamente en javasci2, estoy trabajando en acomodar los ejemplos a la nueva sintaxis. Revisa ésta página http://help.scilab.org/docs/5.3.0/en_US/compile_and_run_javasci_v2.html. Disculpa que no te pueda ofrecer una respuesta más concreta, pero tengo tiempo sin usar MSWindows

    ResponderEliminar
  14. Gracias por responder manuel, ya resolví el problema eran las comillas que dices tenia que colocar en la variable SCI en Windows 7 no son necesaria. Otra cosa, ahora la interfaz gráfica de scilab no funciona, intenta abrir y luego se cierra, si sabes el por que? te agradezco que me ayudes con ese problema!

    ResponderEliminar
  15. Saludos Miguel, siempre a la orden!! Con respecto a la GUI de Scilab, lo que me cuentas es un pequeño problema, ya reportado, que tiene Scilab cuando desarrollas aplicaciones en javasci en MSWindows. Para resolverlo debes deshabilitar las variables
    4.- SCI_DIABLE_TK = 1
    5.- SCI_JAVA_ENABLE_HEADLESS = 1
    Para ello debes colocar 0 en éstas variables. Sí vas a usar de nuevo javasci debes volverlas a colocar en 1 (esto no sucede en GNU/linux)
    Cualquier duda, estamos a la orden.

    ResponderEliminar
  16. Hola, tengo un problema grave con el Scilab. Tengo windows 7 y puedo graficar cualquier función continua pero cuando intento graficar algo tan simple como un par de puntos, la ventana de gráficos parece que va a abrir pero cuando ya va a cargar se cierra la ventana y todo Scilab.

    Luego cuando vuelves a entrar en Scinotes aparece este error:

    A fatal error has been detected by the Java Runtime Environment:

    EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0ed3605e, pid=3984, tid=4036
    #
    # JRE version: 6.0_32-b05
    # Java VM: Java HotSpot(TM) Client VM (20.7-b02 mixed mode windows-x86 )
    # Problematic frame:
    # C 0x0ed3605e
    #
    # If you would like to submit a bug report, please visit:
    # http://java.sun.com/webapps/bugreport/crash.jsp
    # The crash happened outside the Java Virtual Machine in native code.
    # See problematic frame for where to report the bug.
    #


    --------------- T H R E A D ---------------

    Current thread (0x06c45c00): JavaThread "AWT-EventQueue-0" [_thread_in_native, id=4036, stack(0x07010000,0x07110000)]

    siginfo: ExceptionCode=0xc0000005, reading address 0x00000000

    Registers:
    EAX=0x00000000, EBX=0x00000000, ECX=0x00301ec0, EDX=0x00301d00
    ESP=0x0710e9e0, EBP=0x0fbc4dbc, ESI=0x0000003c, EDI=0x00000003
    EIP=0x0ed3605e, EFLAGS=0x00010246

    Top of Stack: (sp=0x0710e9e0)
    0x0710e9e0: 04ffa803 0fbc4dbc 00000000 00000000
    0x0710e9f0: 00000000 0041fbff 00000003 0000003c
    0x0710ea00: 00301d00 00301ec0 0ed36be3 00000000
    0x0710ea10: 00001405 00000000 00000000 211b7ee8

    y continúa con mil códigos más...

    He leído algunos foros y dicen que hay un problema de incompatibilidad con mi sistema operativo.

    Yo soy bastante novato en este tipo de temas (con decir que no pude seguir el tutorial arriba mostado, me quedé en lo de la variable path porque no estoy seguro como modificarla), por favor ayúdenme.


    Saludos

    ResponderEliminar
  17. Saludos Andreé, ¿estás usando solo Scilab? o ¿java con Scilab?

    ResponderEliminar

Información muy importante

INFORMACIÓN IMPORTANTE