2013-04-29 81 views
-1

我试图使用开放3类似以下,但它无法与以下错误执行open3的失败,原因是未知错误

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 
+0

我直接在java中执行的命令,但它执行得很好 – constantlearner 2013-04-29 12:43:54

回答

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脚本没有权限运行它。

+0

我直接在java中执行命令,但它执行得很好 – constantlearner 2013-04-29 12:42:38

+0

@constantlearner:'Perl'是用与你直接尝试的同一个用户执行吗?我认为这是启动java可执行文件的一些问题。如果它可以启动它不会产生这个错误消息。它也可以是一些参数(如'-cp')在'@ args'的第一个元素中,你可以一个接一个地打印args中的值吗?'@ args'应该包含一个元素来保存完整的命令行或每个命令行元素在单独的字段中不能混合 – TrueY 2013-04-29 12:56:13

+0

我已经更新了参数数组 – constantlearner 2013-04-29 13:00:59