gpt4 book ai didi

java - "Error: Could not find or load main class” 在 Jenkins

转载 作者:行者123 更新时间:2023-11-30 11:07:52 24 4
gpt4 key购买 nike

我在 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 已经安装了 Java SE Development Kit 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_NUMBER/com/foo/Class.class 中运行 Java 代码

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

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

call(cmd)

关于java - "Error: Could not find or load main class” 在 Jenkins ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28742802/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com