Execute Java from Visual COBOL on AIX

[Migrated content. Thread originally posted on 18 April 2012]

Hello,

I am trying to invoke a Java class from Visual COBOL, following these lines:

Declaring Java Classes

But I am not able to do it. This is the error that appears:
Load error : file '$java$vertex.Vertex'                                         
error code: 198, pc=0, call=1, seg=0                                           
198     Load failure

Java by itself is running well.

The Java module is defined inside the package 'vertex' and my class is named 'Vertex'. I wrote this class using NetBeans, under Windows, and copied the JAR file to the AIX server. The COBOL program has been written without using Eclipse, too.
The lines below belong to this program:
      $set ooctrl" p-f"
       program-id. prvertex as "prvertex".
       
       environment division.
       configuration section.

       repository.
         class Vertex as "$java$vertex.Vertex.jar".

       data division.
     
       working-storage section.       
       copy "javatypes.cpy".
       
       01 aJavaObj             object reference.
       
       01 theTotal        pic 9(9).
       01 CDims           pic x(4) comp-5.
       01 Dims.
          03 Dims-entry    pic x(4) comp-5 occurs 256.
       01 Bounds.
          03 Bounds-entry  pic x(4) comp-5 occurs 256.
       01 ind0            pic x(4) comp-5.
       01 ind1            pic x(4) comp-5.
       01 arrayElement    pic x(4) comp-5.
       01 wsTable         object reference.
       01 wsResult        pic x(4) comp-5.
             
       procedure division.
           invoke Vertex "new" returning aJavaObj.

         goback.

       
       end program prvertex.

What am I doing wrong?

Thank you
  • I believe that you need to just reference the class name in the class description and add the jar file to your CLASSPATH.

    change:
    class Vertex as "$java$vertex.Vertex.jar".
    to:
    class Vertex as "$java$vertex.Vertex".

    and put Vertex.jar on your CLASSPATH.
  • Hello Chris,

    That is was I thought, too. But I have also tried this (in fact, that was my first attempt). I also removed the package from the repository reference and checked out other possible combinations, with the same result.
  • The problem is that I wasn't using cobjrun. But if I use it, I obtain:
    >VC_RCJAVA PRX                                           
                                                                                   
    /swmango/visualcobol/devhub/bin/cobjrun64: Could not load libjvm.so   

    It seems that cannot find 'libjvm.so', but

    :>find . -name "libjvm.so" -exec ls -la {} \;             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/classic/libjvm.so                                                                           
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/j9vm/libjvm.so                                                                             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/lib/ppc/classic/libjvm.so                                                                       
    -r-xr-xr-x    1 bin      bin          247926 Jul 05 2011  ./jre/lib/ppc/j9vm/libjvm.so                   

    >echo $PATH                                               
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/bin:/usr/java6/jre/sh:/usr/java6/jre/bin:/usr/java6/sh:/swmango/visualcobol/devhub/bin:/usr/java6/bin:/usr/bin:/usr/sbin:/MNG/DESA/FUENTES/EQBASE/BIN:/swmango/scripts/EXPL:/swmango/scripts/DESA:/swmango/rmcobol/EXPL:/swmango/rmcobol/DESA:.:/MNG/DESA/FUENTES/EQBASE/VC:/usr/vacpp/bin

    >echo $LIBPATH                                           
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/lib/aix/native_threads:
    /usr/java6/bin/aix/native_threads:/swmango/visualcobol/devhub/lib

    >echo $CLASSPATH                                         
    /usr/java6/lib:/swmango/visualcobol/devhub/lib/mfcobol.jar:/swmango/visualcobol/devhub/lib/mfcobolrts.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/vertex/Vertex.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/x.jar
  • The problem is that I wasn't using cobjrun. But if I use it, I obtain:
    >VC_RCJAVA PRX                                           
                                                                                   
    /swmango/visualcobol/devhub/bin/cobjrun64: Could not load libjvm.so   

    It seems that cannot find 'libjvm.so', but

    :>find . -name "libjvm.so" -exec ls -la {} \;             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/classic/libjvm.so                                                                           
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/j9vm/libjvm.so                                                                             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/lib/ppc/classic/libjvm.so                                                                       
    -r-xr-xr-x    1 bin      bin          247926 Jul 05 2011  ./jre/lib/ppc/j9vm/libjvm.so                   

    >echo $PATH                                               
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/bin:/usr/java6/jre/sh:/usr/java6/jre/bin:/usr/java6/sh:/swmango/visualcobol/devhub/bin:/usr/java6/bin:/usr/bin:/usr/sbin:/MNG/DESA/FUENTES/EQBASE/BIN:/swmango/scripts/EXPL:/swmango/scripts/DESA:/swmango/rmcobol/EXPL:/swmango/rmcobol/DESA:.:/MNG/DESA/FUENTES/EQBASE/VC:/usr/vacpp/bin

    >echo $LIBPATH                                           
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/lib/aix/native_threads:
    /usr/java6/bin/aix/native_threads:/swmango/visualcobol/devhub/lib

    >echo $CLASSPATH                                         
    /usr/java6/lib:/swmango/visualcobol/devhub/lib/mfcobol.jar:/swmango/visualcobol/devhub/lib/mfcobolrts.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/vertex/Vertex.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/x.jar
  • The problem is that I wasn't using cobjrun. But if I use it, I obtain:
    >VC_RCJAVA PRX                                           
                                                                                   
    /swmango/visualcobol/devhub/bin/cobjrun64: Could not load libjvm.so   

    It seems that cannot find 'libjvm.so', but

    :>find . -name "libjvm.so" -exec ls -la {} \;             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/classic/libjvm.so                                                                           
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/bin/j9vm/libjvm.so                                                                             
    -r-xr-xr-x    1 bin      bin          125198 Jul 05 2011  ./jre/lib/ppc/classic/libjvm.so                                                                       
    -r-xr-xr-x    1 bin      bin          247926 Jul 05 2011  ./jre/lib/ppc/j9vm/libjvm.so                   

    >echo $PATH                                               
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/bin:/usr/java6/jre/sh:/usr/java6/jre/bin:/usr/java6/sh:/swmango/visualcobol/devhub/bin:/usr/java6/bin:/usr/bin:/usr/sbin:/MNG/DESA/FUENTES/EQBASE/BIN:/swmango/scripts/EXPL:/swmango/scripts/DESA:/swmango/rmcobol/EXPL:/swmango/rmcobol/DESA:.:/MNG/DESA/FUENTES/EQBASE/VC:/usr/vacpp/bin

    >echo $LIBPATH                                           
    /usr/java6/jre/bin:/usr/java6/jre/bin/classic:/usr/java6/lib/aix/native_threads:
    /usr/java6/bin/aix/native_threads:/swmango/visualcobol/devhub/lib

    >echo $CLASSPATH                                         
    /usr/java6/lib:/swmango/visualcobol/devhub/lib/mfcobol.jar:/swmango/visualcobol/devhub/lib/mfcobolrts.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/vertex/Vertex.jar:/MNG/DESA/FUENTES/EQBASE/VC/java/x.jar
  • Hi voyager, are you using a 32bit JVM? If you are then the problem is that cobjrun is triggering cobjrun64 which wont work with a 32bit JVM. You either need to install a 64bit JVM (if running in 64bit is your intention) or set the COBMODE environment variable to 32.
  • Hello again,

    My program works perfectly if I launch it directly:
    [03500309@aixlab0102]:>java -DproxyHost=proxy.intranet.mango.es -DproxyPort=8080 -jar Vertex.jar 
    Executing Comm...                                                               
    plz wait....buyer address                                                       
    createBuyerType                                                                 
    order lines                                                                     
    line 1                                                                         
    order 2                                                                         
    linea 2                                                                         
    Filling the purchase                                                           
    inputEnvelope                                                                   
    Login                                                                           
    Envelope                                                                       
    attempt to calculateTax60...                                                   
    Total tax order is: 17.71                                                       
                                                                                   
    L Item         Price Tax                                                       
    = ============ ===== =====                                                     
    1 636200279902 100.0 7.0                                                       
    2 614403713602 153.0 10.71   

    But does not work when I invoke it from Visual COBOL:
    [03500309@aixlab0102]:>VC_RCJAVA PRVERTEX                                       
                                                                                   
    Executing Comm...                                                               
    plz wait...                                                                     
                                                                                   
    Exception 65537 not trapped by the class javaexceptionmanager.                 
    Description: "Java exception"                                                   
    net (A file or directory in the path name does not exist.)                     
    Hit T to terminate program. Hit any other key to continue. 

    It seems that cannot find the net library... ¿¿??
  • Hello again,

    My program works perfectly if I launch it directly:
    [03500309@aixlab0102]:>java -DproxyHost=proxy.intranet.mango.es -DproxyPort=8080 -jar Vertex.jar 
    Executing Comm...                                                               
    plz wait....buyer address                                                       
    createBuyerType                                                                 
    order lines                                                                     
    line 1                                                                         
    order 2                                                                         
    linea 2                                                                         
    Filling the purchase                                                           
    inputEnvelope                                                                   
    Login                                                                           
    Envelope                                                                       
    attempt to calculateTax60...                                                   
    Total tax order is: 17.71                                                       
                                                                                   
    L Item         Price Tax                                                       
    = ============ ===== =====                                                     
    1 636200279902 100.0 7.0                                                       
    2 614403713602 153.0 10.71   

    But does not work when I invoke it from Visual COBOL:
    [03500309@aixlab0102]:>VC_RCJAVA PRVERTEX                                       
                                                                                   
    Executing Comm...                                                               
    plz wait...                                                                     
                                                                                   
    Exception 65537 not trapped by the class javaexceptionmanager.                 
    Description: "Java exception"                                                   
    net (A file or directory in the path name does not exist.)                     
    Hit T to terminate program. Hit any other key to continue. 

    It seems that cannot find the net library... ¿¿??
  • Hello again,

    My program works perfectly if I launch it directly:
    [03500309@aixlab0102]:>java -DproxyHost=proxy.intranet.mango.es -DproxyPort=8080 -jar Vertex.jar 
    Executing Comm...                                                               
    plz wait....buyer address                                                       
    createBuyerType                                                                 
    order lines                                                                     
    line 1                                                                         
    order 2                                                                         
    linea 2                                                                         
    Filling the purchase                                                           
    inputEnvelope                                                                   
    Login                                                                           
    Envelope                                                                       
    attempt to calculateTax60...                                                   
    Total tax order is: 17.71                                                       
                                                                                   
    L Item         Price Tax                                                       
    = ============ ===== =====                                                     
    1 636200279902 100.0 7.0                                                       
    2 614403713602 153.0 10.71   

    But does not work when I invoke it from Visual COBOL:
    [03500309@aixlab0102]:>VC_RCJAVA PRVERTEX                                       
                                                                                   
    Executing Comm...                                                               
    plz wait...                                                                     
                                                                                   
    Exception 65537 not trapped by the class javaexceptionmanager.                 
    Description: "Java exception"                                                   
    net (A file or directory in the path name does not exist.)                     
    Hit T to terminate program. Hit any other key to continue. 

    It seems that cannot find the net library... ¿¿??