由于未知错误,open3的执行失败

时间:2013-04-29 10:59:25

标签: perl

我正在尝试使用类似下面的open 3,但它失败并出现以下错误

    0:[/home/gangg/jdk1.6.0_30/jre/bin/java]
1:[ -cp ]
2:[/scratch/agentHome/osbssl/plugins/oracle.sysman.emas.agent.plugin_12.1.0.4.0/archives/em-pp-osbProv-pojo.jar:/scratch/gangg/wls1036/middleware/wlserver_10.3/server/lib/weblogic.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/lib/sb-kernel-api.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/lib/sb-kernel-impl.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/modules/com.bea.common.configfwk_1.6.0.0.jar]
3:[ -Dweblogic.security.SSL.trustedCAKeyStore=/scratch/agentHome/osbssl/agent_inst/sysman/config/montrust/AgentTrust.jks]
4:[oracle.sysman.pp.osbprov.util.OSBResourceImportUtil]
5:[/scratch/agentHome/osbssl/core/12.1.0.3.0/EMStage/PAF/osbprov/A051D1BF44FC91B2B624B08B21932FD6_1367241748834/target_/Farm02_base_domain/base_domain/HelloWorld.jar]
6:[test.com]
7:[7771]
8:[weblogic]
9:[true]
10:[true]
11:[true]
12:[true]
13:[true]
14:[null]
15:[11.1.1.6]
16:[t3s]

     $pid = open3( \*HANDLE_IN, \*HANDLE_OUT, \*HANDLE_ERR, @args);

 open3: exec of /home/gangg/jdk1.6.0_30/jre/bin/java -cp /scratch/agentHome/osbssl/plugins/oracle.sysman.emas.agent.plugin_12.1.0.4.0/archives/em-pp-osbProv-pojo.jar:/scratch/gangg/wls1036/middleware/wlserver_10.3/server/lib/weblogic.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/lib/sb-kernel-api.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/lib/sb-kernel-impl.jar:/scratch/gangg/wls1036/middleware/Oracle_OSB1/modules/com.bea.common.configfwk_1.6.0.0.jar
-Dweblogic.security.SSL.trustedCAKeyStore=/scratch/agentHome/osbssl/agent_inst/sysman/config/montrust/AgentTrust.jks abc.xyz.OSBResourceImportUtil /scratch/agentHome/osbssl/core/12.1.0.3.0/EMStage/PAF/osbprov/A051D1BF44FC91B2B624B08B21932FD6_1367231855615/target_/Farm02_base_domain/base_domain/HelloWorld.jar test.xyz.com 7771 weblogic true true true true true null 11.1.1.6 t3s failed at 
 /tmp/JOB_DB7E7A13B78883EAE040E80A57827806/deploy.pl line 157

1 个答案:

答案 0 :(得分:2)

我认为这不是perl问题。 java代码失败。使用相同的命令行手动运行它并检查返回值并查看打印到屏幕的内容。

我检查了一下这个问题。如果被调用的java代码返回异常,则open3返回pid并且可以读取stderr。如果java代码的名称错误,则java也会返回异常,因此可以读取stderr。但是如果java解释器的路径错误,那么可以得到以下perl错误消息:

open3: exec of gijx -cp . a x failed at ./a.pl line 8

因此我假设java(我使用gij而不是java)的路径不正确或perl脚本无权运行它。