Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从批处理JCL执行java_Java_Batch Processing_Mainframe_Jcl - Fatal编程技术网

从批处理JCL执行java

从批处理JCL执行java,java,batch-processing,mainframe,jcl,Java,Batch Processing,Mainframe,Jcl,在过去,我使用BPXBATCH从JCL执行java类文件。我想使用IBM在下面的链接中推荐的定制JVM启动器。 我编写了一个hello world java程序,在大型机上编译并打包到一个jar中 下面是一个使用BPXBATCH的JCL成员示例 //LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD', // CLASS=A,MSGCLASS=H,REGION=512M,NOTIFY=&SYSUID

在过去,我使用BPXBATCH从JCL执行java类文件。我想使用IBM在下面的链接中推荐的定制JVM启动器。

我编写了一个hello world java程序,在大型机上编译并打包到一个jar中

下面是一个使用BPXBATCH的JCL成员示例

//LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD',                   
//   CLASS=A,MSGCLASS=H,REGION=512M,NOTIFY=&SYSUID                     
//******************************************************************** 
//* Run Java under a UNIX System Service shell                         
//******************************************************************** 
//STEP2 EXEC PGM=BPXBATCH,                                             
// PARM='SH java com.foo.bar.HelloWorld'                  
//STDIN  DD DUMMY                                                      
//STDOUT DD PATH='/tmp/&SYSUID..bpxbatch.out',                         
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),                                   
// PATHMODE=SIRWXU                                                     
//STDERR DD PATH='/tmp/&SYSUID..bpxbatch.err',                         
// PATHOPTS=(OWRONLY,OCREAT,OTRUNC),                                   
// PATHMODE=SIRWXU                                                     
//STDENV DD *                                                          
CLASSPATH=/u/myuid                                                
//*********************************************************************
//* Copy HFS output files to SYSOUT, since BPXBATCH can only write     
//* STDOUT and STDERR to HFS files.                                    
//*********************************************************************
//STEP3 EXEC PGM=IKJEFT01,DYNAMNBR=300,COND=EVEN                       
//SYSTSPRT DD SYSOUT=*                                                 
//HFSOUT DD PATH='/tmp/&SYSUID..bpxbatch.out'                          
//HFSERR DD PATH='/tmp/&SYSUID..bpxbatch.err'                          
//STDOUTL DD SYSOUT=*,DCB=(RECFM=VB,LRECL=133,BLKSIZE=137)             
//STDERRL DD SYSOUT=*,DCB=(RECFM=VB,LRECL=133,BLKSIZE=137)             
//SYSPRINT DD SYSOUT=*                                                 
//SYSTSIN DD *                                                         
OCOPY INDD(HFSOUT) OUTDD(STDOUTL)                                      
OCOPY INDD(HFSERR) OUTDD(STDERRL)                                      
//                                                                     
我想使用定制JVM启动器带来的所有特性,如上面文章所详细介绍的

上面的示例执行类文件,但本文似乎建议定制JVM启动器需要JAR文件。下面是我创建的用于尝试和使用自定义JVM启动器的作业

在OMVS上,JAR文件是~/HelloWorld/HelloWorld.JAR

//LMGHWRLD JOB (MY,ACCOUNTING,INFO),'HELLO WORLD', 
//   CLASS=A,MSGCLASS=H,REGION=0M,NOTIFY=&SYSUID     
//STEP1    EXEC PGM=JVMLDM60,                        
//   PARM='com.foo.bar.HelloWorld'      
//STEPLIB  DD DSN=<MY.LIBRARY.PATH>,DISP=SHR
//SYSPRINT DD SYSOUT=*                               
//SYSOUT   DD SYSOUT=*                               
//STDOUT   DD SYSOUT=*                               
//STDERR   DD SYSOUT=*                               
//STDENV   DD *                                      
. /etc/profile                                       
. ~/.profile                                         
export CLASSPATH=~/HelloWorld                        
for i in ~/HelloWorld/*.jar; do                      
    export CLASSPATH=$i:$CLASSPATH                   
    done                                             
//     

我的区域大小是200000,所以我不认为区域大小是个问题。有什么我做得不对吗?

这个问题的解决方案是对STDENV DD语句的修改。以下代码应适用于指示区域已更改的任何环境

//STDENV-DD*
#                                                            
#Java主位置
#                                                            
导出JAVA_HOME=/your/omvs/path/to/JAVA/lib
#                                                            
#标准java路径更新
#                                                            
导出路径=/bin:“${JAVA_HOME}”/bin
LIBPATH=/lib:/usr/lib:“${JAVA_HOME}”/bin
LIBPATH=“$LIBPATH”:“${JAVA_HOME}”/lib/s390
LIBPATH=“$LIBPATH”:“${JAVA_HOME}”/lib/s390/j9vm
LIBPATH=“$LIBPATH”:“${JAVA_HOME}”/bin/classic
export LIBPATH=“$LIBPATH”:
#                                                            
#定义jar home的位置(和版本,如果适用)
#                                                            
APP_HOME=/var/location/of/your/jar
CLASSPATH=$APP_HOME:“${JAVA_HOME}”/lib:“${JAVA_HOME}”/lib/ext
#将应用程序所需的JAR添加到类路径的末尾
对于“${APP_HOME}”/*.jar中的i;做
CLASSPATH=“$CLASSPATH”:“$i”
完成
export CLASSPATH=“$CLASSPATH”:
//                                                           

200000什么?你为什么这么想?在你的工作卡上,你有0米。你试过200米了吗?你可能想在技术支持论坛上查看一下。()你好,比尔,200000是我在TSO会议上的区域大小。我以前遇到过一个无法编译.java文件的问题,所以我想我会在我的帖子中提到它。我试过用256米跑,运气不好。我仍在努力解决这个问题。上次升级到z/OS 1.13时,我不得不将我所在区域的大小从200米增加到300米。我不记得当时安装了哪个版本的Java。当谈到Java和区域大小时,要想得大一些(与COBOL等相比)。直觉是,您应该能够从“命令行”TSO ISH测试这一点?这确实在ishell/omvs中运行。我需要它是一个批处理作业,用于作业调度、实时假脱机输出和sdsf中的可见性。明白了,但根据使用的帐户,env应该是相同的吗?BPXBATCH只是一个背景?这里只考虑故障排除方面。例如,我经常需要在HFS上运行“查找”。这个问题问得好。
JVMJZBL1001N JZOS batch Launcher Version: 2.3.0 2013-05-02     
JVMJZBL1002N Copyright (C) IBM Corp. 2005. All rights reserved.
JVMJZBL1038E Child shell process exited with exit code: 1      
JVMJZBL1042E JZOS batch launcher failed, return code=102