错误:来自 jenkins 工作的 jslint 的“拒绝访问”

Posted

技术标签:

【中文标题】错误:来自 jenkins 工作的 jslint 的“拒绝访问”【英文标题】:Error: 'Access Denied' from jslint on a jenkins job 【发布时间】:2013-09-06 23:43:00 【问题描述】:

我正在使用 jslint 插件运行 jenkins 作业。我的构建失败并出现以下错误,在工作区拒绝访问。我应该给工作区任何文件权限吗?我正在使用 git 来签出项目,并且文件得到了很好的签出。任何人都可以给我一些关于下面提到的错误的指示吗?

Started by user anonymous
Building in workspace C:\Program Files\Jenkins\jobs\test\workspace
Checkout:workspace / C:\Program Files\Jenkins\jobs\test\workspace - hudson.remoting.LocalChannel@10d4b20
Using strategy: Default
Last Built Revision: Revision 13460c60318e0c4859473d848dd81f76073fe34e (origin/master, origin/HEAD)
Fetching changes from 1 remote Git repository
Fetching upstream changes from origin
Seen branch in repository origin/HEAD
Seen branch in repository origin/master
Seen 2 remote branches
Commencing build of Revision 13460c60318e0c4859473d848dd81f76073fe34e (origin/master, origin/HEAD)
Checking out Revision 13460c60318e0c4859473d848dd81f76073fe34e (origin/master, origin/HEAD)
Warning : There are multiple branch changesets here
[JSLint] Ready
[JSLint] calling jslint with args[-DxmlOutput=C:\Program Files\Jenkins\jobs\test\workspace/, C:\Program Files\Jenkins\jobs\test\workspace\readme.js]
[JSLint] JSLint path is jar:file:/C:/Program Files/Jenkins/plugins/jslint/WEB-INF/lib/classes.jar!/com/boxuk/jenkins/jslint/JSLintBuilder/jslint.js
FATAL: Wrapped java.io.FileNotFoundException: C:\Program Files\Jenkins\jobs\test\workspace (Access is denied) (jslint.js#5732)
org.mozilla.javascript.WrappedException: Wrapped java.io.FileNotFoundException: C:\Program Files\Jenkins\jobs\test\workspace (Access is denied) (jslint.js#5732)
    at org.mozilla.javascript.Context.throwAsScriptRuntimeEx(Context.java:1773)
    at org.mozilla.javascript.MemberBox.newInstance(MemberBox.java:202)
    at org.mozilla.javascript.NativeJavaClass.constructSpecific(NativeJavaClass.java:281)
    at org.mozilla.javascript.NativeJavaClass.construct(NativeJavaClass.java:200)
    at org.mozilla.javascript.ScriptRuntime.newObject(ScriptRuntime.java:2327)
    at org.mozilla.javascript.gen.c6._c149(jslint.js:5732)
    at org.mozilla.javascript.gen.c6.call(jslint.js)
    at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:66)
    at org.mozilla.javascript.gen.c6._c0(jslint.js:5591)
    at org.mozilla.javascript.gen.c6.call(jslint.js)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:398)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3065)
    at org.mozilla.javascript.gen.c6.call(jslint.js)
    at org.mozilla.javascript.gen.c6.exec(jslint.js)
    at org.mozilla.javascript.Context.evaluateReader(Context.java:1135)
    at com.boxuk.jenkins.jslint.LintRunner.call(LintRunner.java:126)
    at com.boxuk.jenkins.jslint.LintRunner.call(LintRunner.java:28)
    at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
    at com.boxuk.jenkins.jslint.JSLintBuilder.perform(JSLintBuilder.java:116)
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:804)
    at hudson.model.Build$BuildExecution.build(Build.java:199)
    at hudson.model.Build$BuildExecution.doRun(Build.java:160)
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:586)
    at hudson.model.Run.execute(Run.java:1603)
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
    at hudson.model.ResourceController.execute(ResourceController.java:88)
    at hudson.model.Executor.run(Executor.java:247)
Caused by: java.io.FileNotFoundException: C:\Program Files\Jenkins\jobs\test\workspace (Access is denied)
    at java.io.FileOutputStream.open(Native Method)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileOutputStream.<init>(Unknown Source)
    at java.io.FileWriter.<init>(Unknown Source)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.mozilla.javascript.MemberBox.newInstance(MemberBox.java:194)

【问题讨论】:

【参考方案1】:

我怀疑您将 JSLint 插件的“日志文件”参数留空。插件将一个空文件名传递给 JSLint,生成的路径指向您的工作区目录;您可以在日志输出中看到:

在幕后,JSLint 正在尝试打开一个目录进行写入,这当然不会成功,因此您会看到“访问被拒绝”错误。

从文档中不清楚是否需要“日志文件”,但通过为日志文件提供文件名来解决问题,如下所示:

另外,请记住,如果您将 JSLint 作为前置步骤运行,您的 target 文件夹将不存在,因此如果您尝试使用它,您会看到另一个错误。

【讨论】:

以上是关于错误:来自 jenkins 工作的 jslint 的“拒绝访问”的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 与 JSLint 和 Violations 插件

JSLinting ES6 模块:未声明的全局变量(来自 CDN 的 jQuery)

我应该担心“未定义窗口”JSLint 严格模式错误吗?

JSLint 错误:“预期在 EOF 处换行”,与 Beautify 插件冲突

如何更改 jslint(VS 2010 扩展名)以忽略文件?

未声明 Javascript 警报中的 JSLint 混淆