Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.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
Java &引用;错误:无法找到或加载主类”;在詹金斯_Java_Python_Jenkins_Main - Fatal编程技术网

Java &引用;错误:无法找到或加载主类”;在詹金斯

Java &引用;错误:无法找到或加载主类”;在詹金斯,java,python,jenkins,main,Java,Python,Jenkins,Main,我在ubuntu中使用jenkins,我需要从python脚本调用一个java类。守则: import os import shutil import sys from subprocess import call, STDOUT param1=os.getenv(‘PARAM1’) param2=os.getenv(‘PARAM2’) param3=os.getenv(‘PARAM3’) cmd1 =”cp /…/Class.class $JENKINS_HOME/jobs/$JOB_N

我在ubuntu中使用jenkins,我需要从python脚本调用一个java类。守则:

import os 
import shutil
import sys
from subprocess import call, STDOUT

param1=os.getenv(‘PARAM1’)
param2=os.getenv(‘PARAM2’)
param3=os.getenv(‘PARAM3’)

cmd1 =”cp /…/Class.class $JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/Class.class ”


cmd2=”java  $JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER/Class ” +””+param1+””+param2””+param3

print>>> sys.stder, “Launching command: “ + cmd2
call(cmd1,shell=True)
call(cmd2,shell=True)
但控制台输出显示“错误:无法找到或加载主类” 我已经检查了文件是否被复制,Jenkis已经安装了JavaSE开发工具包8u31版本。 我试着分两步构建这个过程,首先复制java文件,然后设置变量,然后进行第二次调用,但出现了相同的错误。 谢谢

我已将代码更改为:

classpath=os.path.join(os.getenv('JENKINS_HOME'),"jobs",os.getenv(JOB_NAME'),"builds",os.getenv('BUILD_NUMBER'))
cmd2=[“java”,”-classpath”,classpath,”Class”,param1,param2,param3]
call(cmd2)
代码有效

当我使用参数构建时,控制台输出显示“Usage_java[-options]class[args…]…”

java不支持直接“将此文件作为类运行”。相反,您需要将类添加到类路径,然后使用Java完全限定名调用它:

java -classpath $JENKINS_HOME/jobs/$JOB_NAME/builds/$BUILD_NUMBER com.foo.Class ...
将在
../builds/$BUILD\u NUMBER/com/foo/Class.Class中运行Java代码

注意:避免使用字符串调用()。而是构建一个命令加参数的列表。这样,您就可以正确地替换变量,并且文件名中的空格不会导致意外/难以发现的问题:

classpath = os.path.join(os.genenv("JENKINS_HOME), "jobs", ...)
cmd = [
   "java",
   "-classpath",
   classpath,
   "Class",
   ...
]

call(cmd)

请格式化您的代码。