Jenkins - 使用cli生成一个作业,结果是java.lang.NullPointerException

时间:2011-08-18 18:13:40

标签: java hudson jenkins java.lang.class

所有

如果之前有人问我,我很抱歉,但我无法在任何地方找到合适的帖子。我正在尝试使用Jenkins cli和jankins-cli.jar在我的Jenkins实例中建立一个工作。

我可以使用以下方式显示帮助信息:

java -jar jenkins-cli.jar -s http://jenkins.<company>.com/hudson help

我也可以登录:

java -jar jenkins-cli.jar -s http://jenkins.<comapny>.com/hudson \
    login --username <username>

但是,出于某种原因,我无法使用Jenkins cli在我的jenkins实例中构建作业。它总是会导致java.lang.NullPoiinterException。还有其他人遇到过麻烦吗?

提前感谢!

java -jar jenkins-cli.jar -s http://jenkins.<company>.com:8080/hudson build <job>
java.lang.NullPointerException
at hudson.util.CaseInsensitiveComparator.compare(CaseInsensitiveComparator.java:40)
at hudson.util.CaseInsensitiveComparator.compare(CaseInsensitiveComparator.java:34)
at java.util.TreeMap.getEntryUsingComparator(TreeMap.java:351)
at java.util.TreeMap.getEntry(TreeMap.java:322)
at java.util.TreeMap.get(TreeMap.java:255)
at hudson.util.CopyOnWriteMap.get(CopyOnWriteMap.java:89)
at jenkins.model.Jenkins.getItem(Jenkins.java:1884)
at hudson.model.AbstractProject.findNearest(AbstractProject.java:1956)
at hudson.cli.handlers.AbstractProjectOptionHandler.parseArguments(AbstractProjectOptionHandler.java:54)
at org.kohsuke.args4j.CmdLineParser.parseArgument(CmdLineParser.java:435)
at hudson.cli.CLICommand.main(CLICommand.java:177)
at hudson.cli.CliManagerImpl.main(CliManagerImpl.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.perform(RemoteInvocationHandler.java:274)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:255)
at hudson.remoting.RemoteInvocationHandler$RPCRequest.call(RemoteInvocationHandler.java:215)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:287)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

3 个答案:

答案 0 :(得分:0)

我不熟悉您正在使用的工作,但我知道您可以使用位于此处的jenkins api开始工作

https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

这是假设你有一份工作正在运行。

答案 1 :(得分:0)

我遇到了同样的问题,可以通过以下步骤解决问题:

之后,使用java -jar jenkins-cli.jar -i keyfile -s http://jenkins.<company>.com:8080/hudson build <job>开始构建没有任何例外。

答案 2 :(得分:0)

我不确定你是否得到了正确答案。这应该有效:

java -jar jenkins-cli.jar -s <url of the CI server> build <job name> --username <username> --password <password>

例如,如果CI服务器是&#34; http://myserver.com:8080/&#34; ,要建立的工作是&#34; My_App_Build&#34; ,用户名为&#34; myusername&#34; ,密码是&#34; mypassword&#34;然后,

java -jar jenkins-cli.jar -s http://myserver.com:8080 build My_App_Build --username myusername --password mypassword 

注意:您会发现错误,例如&#34; 没有这样的命令: - username &#34;如果参数的顺序不正确。