Error getting files when breaking cucumber-jvm.jar

I am trying to create an executable jar for functional tests by cracking dependency banks using a gradle task like Jar.

Cucumber-1.1.3 is one of the dependencies. I am using gradle 1.1 with JVM 1.6 (company standards)

I get the following error:

org.gradle.api.GradleException: Failed to open ZIP '/dev/shm/263985/transformer/caches/artifacts-14/filestore/info.cukes/cucumber-java/1.1.3/jar/4b389fbe494942b319518d27ae38571f477967f6/cuc 1.1.3.jar. at org.gradle.api.internal.file.archive.ZipFileTree.visit (ZipFileTree.java:97) at org.gradle.api.internal.file.collections.FileTreeAdapter.visit (FileTreeAdapter.java:96) at org.gradle .api.internal.file.AbstractFileTree $ FilteredFileTree.visit (AbstractFileTree.java:136) at org.gradle.api.internal.file.AbstractFileTree.getFiles (AbstractFileTree.java:37) at org.gradle.api.internal.file .CompositeFileCollection.getFiles (CompositeFileCollection.java:39) at org.gradle.api.internal.file.AbstractFileCollection.iterator (AbstractFileCollection.java:60) at org.gradle.api.internal.changedetection.DefaultFileSnapshotter.snapshot (DefaultFile : 42) at org.gradle.api.internal.changedetection.InputFilesChangedUpToDateRule.create (InputFilesChangedUpToDateRule.java:35) at org.gradle.api.internal.changedetection.CompositeUpToDateRule.create (CompositeRpule.Treule.Treule.treule.treule.treule.trelegule api.internal.changedetection.DefaultTaskArtifactStateRepository $ HistoricExecution.calcCurrentState (DefaultTaskArtifactStateRepository.java:80) at org.gradle.api.internal.changedetection.DefaultTaskArtifactStateRepository $ HistoricExecution.isUpToDate.tefate.jtle.fate.je (DefaultTaskArtifactStateRepository.java:128) at org.gradle.api.internal.changedetection.ShortCircuitTaskArtifactStateRepository $ ShortCircuitArtifactState.isUpToDate (ShortCircuitTaskArtifactStateRepository.java:77) on org.gradle.api.internal.changedetection.FileCacheBroadcastTaskArtifactStateRepository $ 1.isUpToDate (FileCacheBroadcastTaskArtifactStateRepository.java: 37) at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute (SkipUpToDateTaskExecuter.java:44) at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute (ValidatingTaskExecute) .gradle.api.internal.tasks .execution.SkipEmptySourceFilesTaskExecuter.execute (SkipEmptySourceFilesTaskExecuter.java:41) at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute (SkipTaskWithNoActionsExecuter.jetch. .execute (SkipOnlyIfTaskExecuter.java:52) at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute (ExecuteAtMostOnceTaskExecuter.java:42) at org.gradle.api.internal.AbstractTaskexure ) at org.gradle.execution.DefaultTaskGraphExecuter.executeTask (DefaultTaskGraphExecuter.java:192) at org.gradle.execution.DefaultTaskGraphExecuter.doExecute (DefaultTaskGraphExecuter.java:177) at org.gradle.execution.DefaultTaskGask.ExecuteTaskGask.ExecuteTaskGask.ExecuteTaskGask 83) at org.gradle.execution.SelectedTaskExecutionAction.execute (SelectedTaskExecutionAction.java:36) at org.gradle.execution.DefaultBuildExecute r.execute (DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.access $ 200 (DefaultBuildExecuter.java:23) at org.gradle.execution.DefaultBuildExecuter $ 2.proceed (DefaultBuildExecuter.java:67) at org.gradle .api.internal.changedetection.TaskCacheLockHandlingBuildExecuter $ 1.run (TaskCacheLockHandlingBuildExecuter.java:31) at org.gradle.cache.internal.DefaultCacheAccess $ 1.create (DefaultCacheAccess.java:111) at org.gradle.cacheacheccess (DefaultCacheAccess.java:126) at org.gradle.cache.internal.DefaultCacheAccess.useCache (DefaultCacheAccess.java:109) at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache (DefaultPersistentDirectoryStore.java:129) at org.gradle api.internal.changedetection.DefaultTaskArtifactStateCacheAccess.useCache (DefaultTaskArtifactStateCacheAccess.java:79) at org.gradle.api.internal.changedetection.TaskCacheLockHandlingBuildExecuter.execute (TaskCacheLockHandlingBuildExu ter.java:29) at org.gradle.execution.DefaultBuildExecuter.execute (DefaultBuildExecuter.java:61) at org.gradle.execution.DefaultBuildExecuter.access $ 200 (DefaultBuildExecuter.java:23) on org.gradle.execution.DefaultBuildExecuter .proceed (DefaultBuildExecuter.java:67) at org.gradle.execution.DryRunBuildExecutionAction.execute (DryRunBuildExecutionAction.java:32) at org.gradle.execution.DefaultBuildExecuter.execute (DefaultBuildExecuter.java:61ex org DefaultBuildExecuter.execute (DefaultBuildExecuter.java:54) at org.gradle.initialization.DefaultGradleLauncher.doBuildStages (DefaultGradleLauncher.java:155) at org.gradle.initialization.DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild (DefaultGradleLauncher.doBuild) .DefaultGradleLauncher.run (DefaultGradleLauncher.java:78) at org.gradle.launcher.cli.ExecuteBuildAction.run (ExecuteBuildAction.java:38) at org.gradle.launcher.exec.InProcessGradleLauncherActionExecut er. .gradle.launcher.cli.ActionAdapter.execute (ActionAdapter.java:30) at org.gradle.launcher.cli.ActionAdapter.execute (ActionAdapter.java:22) at org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction.execute (CommandLineActionFactory.java:200) at org.gradle.launcher.cli.CommandLineActionFactory $ ParseAndBuildAction.execute (CommandLineActionFactory.java:173) at org.gradle.launcher.cli.CommandLineActionFactory $ WithLogging.exavaute org.gradle.launcher.cli.CommandLineActionFactory $ WithLogging.execute (CommandLineActionFactory.java:138) at org.gradle.launcher.cli.ExceptionReportingAction.execute (ExceptionReportingAction.java:33) at org.gradle.launche r.cli.ExceptionReportingAction.execute (ExceptionReportingAction.java:22) at org.gradle.launcher.Main.doAction (Main.java:48) at org.gradle.launcher.bootstrap.EntryPoint.run (EntryPoint.java:45) on org.gradle.launcher.Main.main (Main.java:39) on org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit (ProcessBootstrap.java:50) on org.gradle.launcher.bootstrap.ProcessBootstrap.run (ProcessBootstrap .java: 32) on org.gradle.launcher.GradleMain.main (GradleMain.java:26)

Caused by: org.gradle.api.GradleException: Failed to copy the zip / dev / shm / 263985 / transformer / caches / artifacts-14 / filestore / info.cukes / cucumber-java / 1.1.3 / jar / 4b389fbe494942b319518d27ae38571f477967f-77967f6777-679bfc java-1.1.3.jar! Cucumber / api / java / ar / ??. Class to '/dev/shm/263985/transformer/target/tmp/expandedArchives/cucumber-java-1.1.3.jar_6mn6efsv2arssmg9fup79f3fm5/cucumber/api/java/ar/??.class. at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo (AbstractFileTreeElement.java:68) at org.gradle.api.internal.file.archive.ZipFileTree $ DetailsImpl.getFile (ZipFileTree.java:124) at org.gradle .api.internal.file.AbstractFileTree $ 1.visitFile (AbstractFileTree.java:39) at org.gradle.api.internal.file.AbstractFileTree $ FilteredFileTree $ 1.visitFile (AbstractFileTree.java:145) at org.gradle.api.internal .file.archive.ZipFileTree.visit (ZipFileTree.java:90) ... 61 more

Causes: java.io.IOException: Failed to set 420 file permissions to file. errno: 84 on org.gradle.internal.nativeplatform.filesystem.LibcChmod.chmod (LibcChmod.java:39) on org.gradle.internal.nativeplatform.filesystem.GenericFileSystem.chmod (GenericFileSystem.java:67) on org.gradle. api.internal.file.AbstractFileTreeElement.copyTo (AbstractFileTreeElement.java:65) ... another 65

Note: This works fine when using gradle 1.1 with JVM 1.7.

Let me know if you know why this is happening and if there are any fixes or alternatives. Thanks in advance!

+1
source share
3 answers

You may have encountered a problem that we have encountered. I'm not sure that we understand this 100%, but it seems that when unpacking an archive that contains read-only files, gradle may work. gradle tries to check the zip for any files that it has already unpacked to find out if the unpacking task is updated, and this process may explode if there are read-only files in the archive.

Pay attention to lines like this in your stack:

org.gradle.api.internal.changedetection.CompositeUpToDateRule.create Caused by: java.io.IOException: Failed to set file permissions 420 on file 

Not quite a smoking weapon, but a pretty strong impression. Our solution (hacking, I agree) was to use the following code:

 def fixExpandedArchivesForLinux() { // This interesting hackery fixes the expandedArchives directory // to avoid the read-only extracted ZIP file contents issue. def dir = new File(buildDir, "tmp/expandedArchives") FilePermissions.chmodRecursively(dir, 0200) } 

This can be done first to allow gradle to redeploy the archive when checking for current status.

+2
source

I had a similar problem when working with android libraries (aars). I got his job by deleting directories where macaws are blown up.

def str = "rm -rf" + buildDir.absolutePath + "/ exploded-aar" str.execute ()

0
source

I had the same problem with a file called ". Class" in a cucumber. Launch Exception

 ./gradlew connectedCheck --debug --stacktrace 

showed the following reason:

 Caused by: net.rubygrapefruit.platform.NativeException: Could not set UNIX mode on .../app/build/tmp/expandedArchives/cucumber-java-1.2.4.jar_bkzp93af0tagkjvsr5vkgywjd/cucumber/api/java/ar/??.class: could not convert string to current locale 

It turns out I had a problem with my locale, for which I had previously ignored all warnings from other command line tools. I checked which locales are mentioned in /etc/locale.conf , uncommented the corresponding lines in /etc/locale.gen and ran

 sudo locale-gen 

to restore locales. After that, the file names were displayed as เจ…เจคเฉ‡.class , and the unpacking worked flawlessly.

0
source

All Articles