{"id":6598,"date":"2014-04-20T13:43:55","date_gmt":"2014-04-20T13:43:55","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/04\/20\/how-to-make-gradle-stop-trying-to-chmod-manifest-mf-on-an-ntfs-drive-collection-of-common-programming-errors\/"},"modified":"2014-04-20T13:43:55","modified_gmt":"2014-04-20T13:43:55","slug":"how-to-make-gradle-stop-trying-to-chmod-manifest-mf-on-an-ntfs-drive-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/04\/20\/how-to-make-gradle-stop-trying-to-chmod-manifest-mf-on-an-ntfs-drive-collection-of-common-programming-errors\/","title":{"rendered":"How to make Gradle stop trying to chmod MANIFEST.MF on an NTFS drive-Collection of common programming errors"},"content":{"rendered":"<p>I&#8217;m somewhat new at Gradle. My development PC dual-boots both Windows and Linux, and so I have an NTFS &#8220;data drive&#8221; that both OS&#8217;s share, and I keep all of my development files on this drive. I have a Gradle Java project that compiles fine under Windows, but, under Linux, it fails with this error:<\/p>\n<pre><code>FAILURE: Build failed with an exception.\n\n* What went wrong:\nCould not copy MANIFEST.MF to '\/(...my project path...)\/build\/tmp\/jar\/MANIFEST.MF'.\n\n* Try:\nRun with --debug option to get more log output.\n\n* Exception is:\norg.gradle.api.GradleException: Could not copy MANIFEST.MF to '\/(...my project path...)\/build\/tmp\/jar\/MANIFEST.MF'.\n    at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:70)\n    at org.gradle.api.internal.file.collections.MapFileTree$FileVisitDetailsImpl.getFile(MapFileTree.java:133)\n    at org.gradle.api.internal.file.AbstractFileTree$1.visitFile(AbstractFileTree.java:39)\n    at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTree$1.visitFile(AbstractFileTree.java:145)\n    at org.gradle.api.internal.file.collections.MapFileTree$Visit.visit(MapFileTree.java:103)\n    at org.gradle.api.internal.file.collections.MapFileTree.visit(MapFileTree.java:70)\n    at org.gradle.api.internal.file.collections.FileTreeAdapter.visit(FileTreeAdapter.java:96)\n    at org.gradle.api.internal.file.AbstractFileTree$FilteredFileTree.visit(AbstractFileTree.java:136)\n    at org.gradle.api.internal.file.AbstractFileTree.getFiles(AbstractFileTree.java:37)\n    at org.gradle.api.internal.file.CompositeFileCollection.getFiles(CompositeFileCollection.java:39)\n    at org.gradle.api.internal.file.AbstractFileCollection.iterator(AbstractFileCollection.java:60)\n    at org.gradle.api.internal.changedetection.state.DefaultFileSnapshotter.snapshot(DefaultFileSnapshotter.java:42)\n    at org.gradle.api.internal.changedetection.rules.InputFilesStateChangeRule.create(InputFilesStateChangeRule.java:33)\n    at org.gradle.api.internal.changedetection.rules.TaskUpToDateState.(TaskUpToDateState.java:48)\n    at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.getStates(DefaultTaskArtifactStateRepository.java:151)\n    at org.gradle.api.internal.changedetection.changes.DefaultTaskArtifactStateRepository$TaskArtifactStateImpl.isUpToDate(DefaultTaskArtifactStateRepository.java:72)\n    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:45)\n    at org.gradle.api.internal.tasks.execution.ContextualisingTaskExecuter.execute(ContextualisingTaskExecuter.java:34)\n    at org.gradle.api.internal.changedetection.state.CacheLockAcquiringTaskExecuter$1.run(CacheLockAcquiringTaskExecuter.java:39)\n    at org.gradle.internal.Factories$1.create(Factories.java:22)\n    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)\n    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112)\n    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:134)\n    at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)\n    at org.gradle.api.internal.changedetection.state.CacheLockAcquiringTaskExecuter.execute(CacheLockAcquiringTaskExecuter.java:37)\n    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)\n    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:41)\n    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51)\n    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:52)\n    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:42)\n    at org.gradle.api.internal.AbstractTask.executeWithoutThrowingTaskFailure(AbstractTask.java:282)\n    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.executeTask(DefaultTaskPlanExecutor.java:48)\n    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.processTask(DefaultTaskPlanExecutor.java:34)\n    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:27)\n    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:89)\n    at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:29)\n    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)\n    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)\n    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)\n    at org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter$1.run(TaskCacheLockHandlingBuildExecuter.java:31)\n    at org.gradle.internal.Factories$1.create(Factories.java:22)\n    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:124)\n    at org.gradle.cache.internal.DefaultCacheAccess.useCache(DefaultCacheAccess.java:112)\n    at org.gradle.cache.internal.DefaultPersistentDirectoryStore.useCache(DefaultPersistentDirectoryStore.java:134)\n    at org.gradle.api.internal.changedetection.state.DefaultTaskArtifactStateCacheAccess.useCache(DefaultTaskArtifactStateCacheAccess.java:79)\n    at org.gradle.api.internal.changedetection.state.TaskCacheLockHandlingBuildExecuter.execute(TaskCacheLockHandlingBuildExecuter.java:29)\n    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)\n    at org.gradle.execution.DefaultBuildExecuter.access$200(DefaultBuildExecuter.java:23)\n    at org.gradle.execution.DefaultBuildExecuter$2.proceed(DefaultBuildExecuter.java:67)\n    at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)\n    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:61)\n    at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:54)\n    at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:166)\n    at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:113)\n    at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:81)\n    at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:64)\n    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:33)\n    at org.gradle.launcher.cli.ExecuteBuildAction.run(ExecuteBuildAction.java:24)\n    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:35)\n    at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:26)\n    at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:50)\n    at org.gradle.api.internal.Actions$RunnableActionAdapter.execute(Actions.java:171)\n    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:201)\n    at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:174)\n    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:170)\n    at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:139)\n    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)\n    at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)\n    at org.gradle.launcher.Main.doAction(Main.java:48)\n    at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)\n    at org.gradle.launcher.Main.main(Main.java:39)\n    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\n    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n    at java.lang.reflect.Method.invoke(Method.java:601)\n    at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:50)\n    at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:32)\n    at org.gradle.launcher.GradleMain.main(GradleMain.java:26)\n\nCaused by: java.io.IOException: Failed to set file permissions 420 on file MANIFEST.MF. errno: 1\n    at org.gradle.internal.nativeplatform.filesystem.LibcChmod.chmod(LibcChmod.java:39)\n    at org.gradle.internal.nativeplatform.filesystem.GenericFileSystem.chmod(GenericFileSystem.java:67)\n    at org.gradle.api.internal.file.AbstractFileTreeElement.copyTo(AbstractFileTreeElement.java:67)\n    ... 77 more\n<\/code><\/pre>\n<p>Googling this error turned up absolutely nothing. Of course, the reason for the error is clear enough: NTFS doesn&#8217;t support UNIX file permissions (well, it technically <em>can<\/em>, but I don&#8217;t have it configured that way because it messes with Windows&#8217;s permissions). When I copied the project to my Linux partition and tried the compile again, it worked.<\/p>\n<p>I looked through the Gradle docs, and can&#8217;t seem to find any way to tell it not to set permissions on MANIFEST.MF. (Why does it even need to do that in the first place?) Of course, Gradle has a <em>lot<\/em> of options, so there may just be something I&#8217;m overlooking. Is there any way to tell it to stop trying to set permissions?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m somewhat new at Gradle. My development PC dual-boots both Windows and Linux, and so I have an NTFS &#8220;data drive&#8221; that both OS&#8217;s share, and I keep all of my development files on this drive. I have a Gradle Java project that compiles fine under Windows, but, under Linux, it fails with this error: [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-6598","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6598","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=6598"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/6598\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=6598"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=6598"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=6598"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}