Question Regarding CALLJ
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
I’m trying to use ‘CALLJ’ method in my routine and have done the following steps, but it still doesn’t work.
I’m wondering if I missed anything, can anyone help me on this matter?
OS: windows server 2008 R2
T24 version: R09
1. I do create Java Project (with Esclipe, JRE 1.7)
public class MyTestClass {
static int i = 0;
private MyTestClass() {}
public String mymethod(String s) {
return ( "Java Received : " + s ) ;
}
public static String mystaticmethod(String s) {
i++;
return s + " " + i;
}
}
3. I do "set JBCJVMLIB=%JAVA_HOME%\jre\bin\server\jvm.dll" on remote.cmd
4. I do "set CLASSPATH=%HOME%\jars\MyTestClass.jar" on remote.cmd
5. I do “set PATH=%PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin\server” on remote.cmd
6. I write a program to call java method
PROGRAM TESTCALLJ
className = ''
methodName = ''
param = ''
*CRT "Please enter a Class Name " : ; INPUT className
*CRT "Please enter a Method Name " : ; INPUT methodName
*CRT "Please enter a Parameter : " ; INPUT param
*CALLJ className,methodName, param SETTING ret ON ERROR GOSUB errHandler
className = 'mypackage.MyTestClass'
methodName = 'mymethod'
param = 'HELLO!'
CALLJ className,methodName, param SETTING ret ON ERROR GOSUB errHandler
CRT "Received batch from Java : " : ret
RETURN
*
errHandler:
err = SYSTEM(0)
IF err = 2 THEN
CRT "Cannot find the JVM.dll !"
RETURN
END
IF err = 3 THEN
CRT "Class " : className : " doesn't exist !"
RETURN
END
*
IF err = 5 THEN
CRT "Method " : methodName : "doesn't exist !"
RETURN
END
END
7. When i run the program, system return:
jsh Administrator ~ -->TESTCALLJ
Class mypackage.MyTestClass doesn't exist !
Received batch from Java : 32768
Attached is my jar file.
Any thoughts or reply is highly appreciated. Thank you very much.
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
Can you create a simple test class like below to find out if java is running on your server correctly. Put the class in the same path where yr jar is.
public class testMe {
public static void main(String a[]) {
String test = "Testing Java on machine ";
System.out.println(test);
}
}
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Thank you very much for your reply. Regarding "if java is running on your server correctly", do you mean running it by executing "java" on jsh?
I'm not sure to run it directly, so I tried below two ways:
jsh Administrator ~ -->java MyTestClass.jar
Exception in thread "main" java.lang.NoClassDefFoundError: MyTestClass/jar
Caused by: java.lang.ClassNotFoundException: MyTestClass.jar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: MyTestClass.jar. Program will exit.
jsh Administrator ~ -->java mypackage.MyTestClass
Exception in thread "main" java.lang.UnsupportedClassVersionError: mypackage/MyTestClass : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(Unknown Source)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: mypackage.MyTestClass. Program will exit.
If the second one is the correct way to do it, then it seems like it's because jdk version between jar and T24 is different......
Could you please let me know if "java package.classname" is the correct way?
Thank you!
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
Record 'testMe.java' exited from file '.'
jsh t24 ~ -->javac testMe.java
jsh t24 ~ -->java testMe
Testing Java on machine
jsh t24 ~ -->
If its not running Kindly post yr .profile file here.
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Thank you very much for the reply. I tried but there is no luck.
jsh A ~ -->
jsh A ~ -->javac testMe.java
jsh A ~ -->testMe
[3] Unable to execute program 'testMe'
jsh A ~ -->
My .profile is as following, thank you!!
# Base variables
################
PS1="$(uname)-\$PWD: "
export HOME=$PWD
export JBCRELEASEDIR=/glosoft/TAFC_R09_GA
export JBCGLOBALDIR=$JBCRELEASEDIR
export JBASE_PATH=$HOME/t24bin
export JBCLISTFILE=$HOME/\&SAVEDLISTS\&
umask 002
export JEDIFILENAME_MD=$HOME/VOC
export JEDIFILENAME_SYSTEM=$JBCRELEASEDIR/src/SYSTEM
export JBCEMULATE=prime
export JBASE_ERRMSG_DIVIDE_BY_ZERO=19
export JBASE_ERRMSG_ZERO_USED=35
export JBASE_ERRMSG_NON_NUMERIC=19
export JBC_CORE_DUMP=1
export JEDIFILEPATH=$HOME
export JEDIENABLEQ2Q=1
# Development:
##############
export JBCDEV_BIN=$HOME/bin
export JBCDEV_LIB=$HOME/lib
# Execution:
############
export JAVA_HOME=/usr/java5_64
export PATH=$JAVA_HOME/bin:$PATH
export JREDIR=$JBCRELEASEDIR/jdk/jre
export PATH=/usr/vac/bin:$JREDIR/bin:$JBCRELEASEDIR/bin:$JBCDEV_BIN:$HOME/t24bin:.:$PATH
export JBCOBJECTLIST=$HOME/lib:$HOME/t24lib
export JBASE_JBCOBJECTLIST_DIR=1
export JRELIB=$JBCRELEASEDIR/java/jre/lib:$JBCRELEASEDIR/jdk/jre/lib/platform
export LD_LIBRARY_PATH=$JBCRELEASEDIR/lib:$JBCDEV_LIB:$JRELIB:${LD_LIBRARY_PATH:-/usr/lib}
export LIBPATH=$JBCRELEASEDIR/lib:$JRELIB:$JBCDEV_LIB:$JAVA_HOME/jre/bin:$JAVA_HOME/jre/bin/classic:${LIBPATH:-/usr/lib}
export SHLIB_PATH=$JBCRELEASEDIR/lib:$JBCDEV_LIB:$JRELIB:${SHLIB_PATH:-/usr/lib}
export JBCJVMLIB=D:/R09/TAFC/R09/java/jre/bin/server/jvm.dll
# Internationalization
#######################
export JBASE_I18N=1
export JBASE_CODEPAGE=utf8
export JBASE_LOCALE=en_US
export JBASE_TIMEZONE=Europe/London
# Printer Services
##################
export JBCSPOOLERDIR=$HOME/jspooler
# Java
#######
export JAVA_HOME=/usr/java5_64
export PATH=$JAVA_HOME/bin:$PATH
export RELIB=$HOME/ruleengine
export CLASSPATH=$RELIB
export CLASSPATH=$CLASSPATH:$RELIB/rules-engine.jar
export CLASSPATH=$CLASSPATH:$RELIB/xml-apis.jar
export CLASSPATH=$CLASSPATH:$RELIB/xercesImpl.jar
export CLASSPATH=$CLASSPATH:$RELIB/xalan.jar
export CLASSPATH=$CLASSPATH:$RELIB/jaxb-api.jar
export CLASSPATH=$CLASSPATH:$RELIB/jaxb-impl.jar
export CLASSPATH=$CLASSPATH:$RELIB/jsr173_1.0_api.jar
export CLASSPATH=$CLASSPATH:$RELIB/antlr-2.7.6.jar
export CLASSPATH=$CLASSPATH:$RELIB/commons.jar
export CLASSPATH=$CLASSPATH:$RELIB/commons-codec-1.3.jar
export CLASSPATH=$CLASSPATH:$RELIB/junit-4.1.jar
export CLASSPATH=$CLASSPATH:$RELIB/jaxb-xjc.jar
export CLASSPATH=$CLASSPATH:$RELIB/activation.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24email/mail.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24email/activation.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24email/t24email.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24email/xercesImpl.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24email/config
export CLASSPATH=$CLASSPATH:$HOME/jars/t24sms
export CLASSPATH=$CLASSPATH:$HOME/jars/t24sms/t24sms-ci.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24sms/t24sms-impl.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24sms/xercesImpl.jar
export CLASSPATH=$CLASSPATH:$HOME/jars/t24sms/config
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/webservices-rt-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/geronimo-jta_1.1_spec-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/webservices-api-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/webservices-extra-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/webservices-extra-api-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/webservices-tools-1.1.jar
export CLASSPATH=$CLASSPATH:$HOME/tagnotification/tag-notifications-3.1-DEV.jar
export JBCJVMOPT1=-server
export JBCJVMOPT2=-Dcom.temenos.tag.notificationws.url=http://localhost:8100/TAGWCF/Notification?wsdl
# Multiple Application Servers
##############################
#export JBCPORTNO=1000-2000
#export JDLS=server=lockservername
#export JBCPROCDIR=/tmp/tafc/proc
# Database variables
# Oracle
#########
#export DRIVER_HOME=$HOME/driver
#export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1
#export ORACLE_SID=MBDEMO
#export TWO_TASK=MBDEMO
#export LIBPATH=$LIBPATH:$ORACLE_HOME/lib
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
#export SHLIB_PATH=$SHLIB_PATH:$ORACLE_HOME/lib
#export PATH=$PATH:$ORACLE_HOME/bin:$DRIVER_HOME/bin
#export JBCOBJECTLIST=$DRIVER_HOME/lib:$JBCOBJECTLIST
#export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
#export TNS_ADMIN=$ORACLE_HOME/network/admin
# DB2
######
#export DRIVER_HOME=$HOME/driver
#export DB2INSTANCE=db2inst1
#export DB2PATH=/home/db2inst1/sqllib
#export DB2_HOME=$DB2PATH
#export LD_LIBRARY_PATH=$DB2_HOME/lib:$LD_LIBRARY_PATH
#export LIBPATH=$DB2_HOME/lib:$LIBPATH
#export SHLIB_PATH=$DB2_HOME/lib:$SHLIB_PATH
#export PATH=$DB2_HOME/bin:$DRIVER_HOME/bin:$PATH
#export JBCOBJECTLIST=$DRIVER_HOME/lib:$JBCOBJECTLIST
#export JBASE_USE_INTERNAL_TXN_CACHE=1
# MS-SQL
########
#rem set DRIVER_HOME=%HOME%\driver
#rem set SQLSERVERDIR=C:\Program Files\Microsoft SQL Server\90
#rem set PATH=%DRIVER_HOME%\bin;%PATH%
#rem set PATH=%SQLSERVERDIR%\Tools\Binn;%PATH%
#rem set JBCOBJECTLIST=%DRIVER_HOME%\lib;%JBCOBJECTLIST%
# T24 Entry Point:
##################
exec $JBCRELEASEDIR/bin/jpqn $JEDIFILENAME_MD/loginproc
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
My execute way is incorrect isn't correct in my last post, so I tried again. The result is as following:
jsh Administrator ~ -->javac testMe.java
jsh Administrator ~ -->java testMe
Exception in thread "main" java.lang.NoClassDefFoundError: testMe
I'm guessing there is still something wrong in my remote.cmd? Because I can run this java in windows' cmd perfectly, but not able to do it in jsh.
C:\Users\Administrator>D:
D:\>javac testMe.java
D:\>java testMe
Testing Java on machine
I'm wondering if it's possible you can share your JAVA-related set-up in remote.cmd with me? Like path or classpath or anything related?
Thank you very much for your kind help!!
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
1) Verify that all required Java classes are included in the application’s classpath. The most common mistake is not to include all the necessary classes, before starting to execute a Java application that has dependencies on some external libraries.
2) The classpath of the application is correct, but the Classpath environment variable is overridden before the application’s execution.
Please Log in or Create an account to join the conversation.
- ambdev
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 5
Error:
Exception in thread "main" java.lang.UnsupportedClassVersionError: mypackage/MyTestClass : Unsupported major.minor version 51.0
How to fix: Unsupported major.minor version 51.0 error?
Change compiler compliance level on the eclipse project preferences or point to a JRE/JDK 1.7 on your profile java settings. By the way, for better performance use the client JVM.
Sample java settings:
set JAVA_HOME=JDK Path
set JREDIR=JRE Path
set JRELIB=%JREDIR%\bin\client;%JREDIR%\lib
set JBCJVMLIB=%JREDIR%\bin\client\jvm.dll
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Thank you very much for your kind advice. Now CALLJ is working!
=============================
I have another question regarding CALLJ. I created a subroutine with CALLJ and attached it to Version (input routine). In Classic Mode (ETS -> EX), the subroutine works fine, but on Desktop(R09), CallJ ERROR 2 occurs (Cannot find the JVM.dll).
I'm wondering if there is anything I have to do, if I want CALLJ to work on Desktop?
Thank you very much!
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
This error is saying cannot find java virtual machine. Check if environment variable JBCJVMLIB is pointing to the exact location of jvm.dll. The file will be present inside the installation folder of JAVA e.g. E:\R11\3rdParty\jdk1.6.0_18\jre\bin\client\jvm.dll.
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Because the subroutine works fine in Classic Mode (I input and commit the version in Classic Mode, and CALLJ works), I think the location of JBCJVMLIB should have been pointed correctly?
I'm wondering why it works on Classic Mode, but not on Desktop......
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Please Log in or Create an account to join the conversation.
- Valleyman1
- Visitor
-
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Please Log in or Create an account to join the conversation.
- ambdev
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 5
Are you using sockets communication in T24 Desktop?
If the answer is yes then you need to modify java settings in TCServer environment.vars file.
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
May I ask how to modify environment.vars? My current environment.vars is as following, and is it correct to add JVM as "JBCJVMLIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server\jvm.dll" directly? Because I added "JBCJVMLIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server\jvm.dll" but still return error "CANNOT FIND JVM.dll"
<unix>
TERM=xterm
JBCRELEASEDIR=<JBASEPATH>
JBCGLOBALDIR=<JBASEPATH>
JBCOBJECTLIST=<GLOBUSPATH>/lib:<GLOBUSPATH>/globuspatchlib:<GLOBUSPATH>/globuslib
LD_LIBRARY_PATH=<JBASEPATH>/lib:/usr/ccs/lib:/usr/lib
LIBPATH=<JBASEPATH>/lib:/usr/ccs/lib:/usr/lib
SHLIB_PATH=<JBASEPATH>/lib:/usr/ccs/lib:/usr/lib
JEDIFILEPATH=<GLOBUSPATH>
JBCLISTFILE=<GLOBUSPATH>/&SAVEDLISTS&
JBCSPOOLERDIR=/usr/jspooler
JEDIFILENAME_MD=VOC
JEDIFILENAME_SYSTEM=<GLOBUSPATH>/SYSTEM
PATH=<JBASEPATH>/bin:/usr/local/bin:<GLOBUSPATH>/bin:<GLOBUSPATH>/globuspatchbin:<GLOBUSPATH>/globusbin
JBCBASETMP=<GLOBUSPATH>/workfile/tmp_$$
JBCEMULATE=prime
JBASE_WARNLEVEL=30
JBASE_INHIBIT_ZERO_USED=1
JEDIENABLEQ2Q=1
JBC_UNLOCK_LASTCLOSE=1
# JBC_EXIT_FAILEDREAD=1
# JBC_EXIT_ZEROREAD=1
JBASE_CODEPAGE=utf8
# JBASE_I18N=1
JBASE_DEBUG_PIPE=1
OFS_SOURCE=<OFSSOURCE>
</unix>
<win32>
TERM=xterm
JBCRELEASEDIR=<JBASEPATH>
JBCGLOBALDIR=<JBASEPATH>
JBCOBJECTLIST=<GLOBUSPATH>\lib;<GLOBUSPATH>\globuspatchlib;<GLOBUSPATH>\globuslib
JEDIFILEPATH=<GLOBUSPATH>\
JBCLISTFILE=<GLOBUSPATH>\&SAVEDLISTS&
JBCSPOOLERDIR=<JBASEPATH>\jspooler
JEDIFILENAME_MD=VOC
JEDIFILENAME_SYSTEM=<JBASEPATH>\src\SYSTEM
PATH=<JBASEPATH>\bin;<GLOBUSPATH>\bin;<GLOBUSPATH>\globuspatchbin;<GLOBUSPATH>\globusbin
JBCBASETMP=<GLOBUSPATH>\tmp_workfile
JBCEMULATE=prime
JBASE_WARNLEVEL=30
JBASE_INHIBIT_ZERO_USED=1
JEDIENABLEQ2Q=1
JBASE_CODEPAGE=utf8
# JBC_UNLOCK_LASTCLOSE=1
# JBC_EXIT_FAILEDREAD=1
# JBC_EXIT_ZEROREAD=1
JBASE_I18N=1
JBASE_DEBUG_PIPE=1
JBASE_LOCALE=en_US
# JBASE_LOCALE=zh_CN
OFS_SOURCE=<OFSSOURCE>
</win32>
Please Log in or Create an account to join the conversation.
- ambdev
- Offline
- Junior Member
-
- Posts: 30
- Thank you received: 5
My mistake, It's not environment.vars but jconsrv.vars the file where you must insert java settings.
In tcserver.xml:
...
<LISTENER Name="jConsrv" type="jconsrv" active="true">
...
<PORT>2000</PORT>
<ENVIRONMENT>jconsrv.vars</ENVIRONMENT>
...
</LISTENER>
In jconsrv.vars:
...
JAVA_HOME=C:\Program Files\Java\jdk1.6.0
JBCJREDIR=C:\Program Files\Java\jdk1.6.0\jre
JBCJRELIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server;C:\Program Files\Java\jdk1.6.0\jre\lib
JBCJVMLIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server\jvm.dll
Please Log in or Create an account to join the conversation.
- chloe_chou
- Topic Author
- Offline
- Premium Member
-
- Posts: 82
- Thank you received: 0
Thank you for the info! I checked my tcserver.xml, and it looks like:
<LISTENER Name="jConsrv" type="jconsrv" active="true">
<ADAPTERID>-none-</ADAPTERID>
<ENV_NAME></ENV_NAME>
<PORT>5500</PORT>
<ENVIRONMENT>jconsrvPROD.vars</ENVIRONMENT>
<STARTIN>d:\R09\T24PROD\bnk\bnk.run</STARTIN>
<JBASEPATH>d:\R09\TAFC\R09</JBASEPATH>
<CONFPATH>d:\R09\TCSERVER\conf\jConsrv\jConsrv.xml</CONFPATH>
</LISTENER>
So I added following in both jconsrv.vars and jconsrvPROD.vars, but still cannot find JVM.
JAVA_HOME=C:\Program Files\Java\jdk1.6.0
JBCJREDIR=C:\Program Files\Java\jdk1.6.0\jre
JBCJRELIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server;C:\Program Files\Java\jdk1.6.0\jre\lib
JBCJVMLIB=C:\Program Files\Java\jdk1.6.0\jre\bin\server\jvm.dll
Is there anything I missed?
Please Log in or Create an account to join the conversation.