有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法运行程序,权限被拒绝

我为Jenkin上的安卓新项目创建了一份新工作。每当我运行作业时,都会出现错误java。木卫一。ioexception错误13权限被拒绝。詹金说无法运行gradlew程序。根据错误解释,我知道gradlew脚本需要执行权限。我批准了这些,然后重新开始詹金的工作。我仍然会犯同样的错误。Jenkin在生成后恢复执行权限。当我从现有作业创建新作业并配置旧项目存储库时,它运行良好。当我配置新的项目存储库时,它引发了权限问题。我在允许的情况下玩了很多,但没有成功。我还比较了新旧项目脚本文件。虽然有几行不同,但这不应该是一个问题。任何人都能告诉我我做错了什么

谢谢


共 (3) 个答案

  1. # 1 楼答案

    这显然是一个许可问题

    java.io.IOException: Cannot run program "<http://jenkins.gradlew"
    error=13, Permission denied
    Caused by: java.io.IOException: error=13, Permission denied
    

    有两种解决gradlew权限问题的解决方案

    • 转到Jenkin作业配置
    • 转到Build选项卡并检查gradlew可执行文件

    当您现在按build时,Jenkin将更改权限。请记住,这些更改是未提交的。如果您的作业不是发布作业,则该过程可以正常工作。如果它是发布作业,它会产生我遇到的另一个问题

    :workspace:app:checkCommitNeeded FAILED
    :app:release FAILED
    
    * What went wrong:
    Execution failed for task ':workspace:app:checkCommitNeeded'.
    > You have uncommitted files:
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       M gradlew
    

    因此,解决问题是非常重要的

    使用可执行位集提交gradlew:

    git update-index  chmod=+x gradlew
    git commit
    

    然后,您将不再需要jenkins设置将其设置为可执行,这是导致第二个问题的解决方法

    希望这能节省一些人的时间,因为我花了好几个小时在周围工作

  2. # 2 楼答案

    您是否使用Jenkins文件进行作业配置? 如果是这样,您需要在此处添加gradlew的权限更改

    sh 'chmod 755 ./gradlew'
    

    听起来你的gradlew每次都会被一个没有执行权限设置的版本替换,所以你需要通过脚本或jenkins文件作为jenkins作业的一部分来执行

  3. # 3 楼答案

    我使用Github进行源代码管理。它在那里获取代码,并且每次都在更新,所以在提交我的Jenkins作业之前将其更改为+x并没有帮助。 在Linux中,项目位于/。jenkins/workspace/MyProjectName/SomeSubFolder/gradlew——每次提交新作业时都会失去+x(我想是644)

    解决方案是选中Make gradlew executable复选框(在Build > Use Gradle Wrapper)-现在是755,正在执行gradle任务