CreateProcess error=206, The filename or extension is too long when running main() method

JavaEclipse

Java Problem Overview


I have this error in eclipse helios:

Exception occurred executing command line. Cannot run program "C:\Program Files (x86)\Java\jre6\bin\javaw.exe" (in directory "C:\Users\motiver\helios_workspace\TimeTracker"): CreateProcess error=206, The filename or extension is too long

I researched a bit but most of the issues were related to DataNucleus when working on Google App Engine. But I am not using anything remotely related to Google App Engine. I am doing a small project with Servlet 3.0 on JBOSS 6. I am using Hibernate 4.1.2 for ORM and RESTEasy to expose a web service. I created a util file that has a main() method that basically drops and re-creates the schema. I run the main() methos when I need a clean database for testing purposes. It worked fine on Tomcat 7 but it stopped working when I moved to JBoss 6.

Any hint or solution would be greatly appreciated.

Java Solutions


Solution 1 - Java

There is no simple (as in a couple of clicks or a simple command) solution to this issue.

Quoting from some answers in this bug report in Eclipse.org, these are the work-arounds. Pick the one that's the least painful to you:

  • Reduce the classpath
  • Use directories instead of jar files
  • Use a packed jar files which contains all other jars, use the classpath variable inside the manifest file to point to the other jars
  • Use a special class loader which reads the classpath from a config file
  • Try to use one of the attached patches in the bug report document
  • Use an own wrapper e.g. ant

Update: After July 2014, there is a better way (thanks to @Brad-Mace's answer below:

If you have created your own build file instead of using Project -> Generate Javadocs, then you can add useexternalfile="yes" to the Javadoc task, which is designed specifically to solve this problem.

Solution 2 - Java

I faced this problem today and I was able to solve it using this Gradle plugin

It's github url is this

IF you, like me, have no idea what Gradle is but need to run a backend to do your front end work, what you need to do is find the build.gradle file that is being called to start your BE server and add this to the top:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}

Solution 3 - Java

If you create your own build file rather than using Project -> Generate Javadocs you can add useexternalfile="yes" to the javadoc task, which is designed specifically to solve this problem.

Solution 4 - Java

enter image description here

In intellij there is an option to 'shorten command line', select 'JAR manifest' or '@argFiles' would solve the problem, basically it will put your lengthy class path into a jar file or a temp file

Solution 5 - Java

I was running into this issue trying to execute a JPQL query in the Hibernate / JPA console of IntelliJ 2020.2

Adding this to my .idea/workspace.xml fixed it

<component name="PropertiesComponent">
 
...
     <property name="dynamic.classpath" value="true"/>
 
...
 
</component>

Origin of the solution: https://youtrack.jetbrains.com/issue/IDEA-166929?_ga=2.167622078.1290412178.1604511702-23036228.1574844686

Solution 6 - Java

Answering my own question here so that the solution doesn't get buried in comments. I exported the project as a runnable jar from within eclipse and did a command line "java -jar MyJar.jar" and it works perfectly fine

Solution 7 - Java

This is not specifically for eclipse, but the way I got around this was by creating a symbolic link to my maven repository and pointing it to something like "C:\R". Then I added the following to my settings.xml file:

<localRepository>C:\R</localRepository>

The maven repository path was contributing to the length problems in my windows machine.

Solution 8 - Java

Try updating your Eclipse version, the issue was closed recently (2013-03-12). Check the bug report https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193

Solution 9 - Java

Question is old, but still valid. I come across this situation often whenever a new member joins my team or a new code segment is added to existing code. Simple workaround we follow is to "Reduce the classpath" by moving up the directories.

As question mentioned, this is not specific to eclipse. I came across this issue in IntelliJ Idea 14 and 2018 as well.

After a long research, I found the solution is to set the

> fork = false

in javc of ant build file.

<javac destdir="${build.dir}" fork="false" debug="on">
    <classpath .../>
    <src ... />
    <patternset ... />
</javac>

This is how my ant build javac looks now. To learn about more on fork, please refer ant documentation.

Solution 10 - Java

In bug report Bug 327193 it is considered fixed, but it happen to me recently with Eclipse Kepler 4.3.2.

Please download patch for Eclipse Juno or newer:

https://bugs.eclipse.org/bugs/attachment.cgi?id=216593

  1. After download back up existing eclipse/plugins/org.eclipse.jdt.launching_3.*.jar
  2. Copy and paste classes in the patch to org.eclipse.jdt.launching JAR (replace existing files).
  3. Restart Eclipse.

Solution 11 - Java

Add below to your gradle file:

plugins {
`id "com.github.ManifestClasspath" version "0.1.0-RELEASE"       
}

See https://plugins.gradle.org/plugin/com.github.ManifestClasspath

Solution 12 - Java

How many people sad above, there are a lot of plugins to gradle execute a by pass in this problem like:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}

or

plugins {
  id "com.github.ManifestClasspath" version "0.1.0-RELEASE"
}

But the better solution that I found was kill the JVM process and everything is done.

Solution 13 - Java

Try adding this in build.gradle (gradle version 4.10.x) file and check it out com.xxx.MainClass this is the class where your main method resides:

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
apply plugin: 'application'
application {
    mainClassName = "com.xxx.MainClass"
}

The above change must resolve the issue, there is another way using script run.sh below could fix this issue, but it will be more of command-line fix, not in IntelliJ to launch gradle bootRun.

Solution 14 - Java

I have got same error, while invoking Maven.

The root cause for my problem was the classpath was very huge. Updating the classpath fixed the problem.

There are multiple ways to update the large classpath as mentioned in this: https://stackoverflow.com/questions/201816/how-to-set-a-long-java-classpath-in-windows

  1. Use wildcards
  2. Argument File
  3. Pathing jar

Since I am using Intellij, they provide the option to use Argument File that i used.

Solution 15 - Java

Try this:

> java -jar -Dserver.port=8080 build/libs/APP_NAME_HERE.jar

Solution 16 - Java

To solve it:

If you are using Eclipse:

Move .m2 repository to

c:
Go to Eclipse > Windows/Preferences/Maven/User Settings -> Create your own setting.xml with its content:

<settings>
  <localRepository>c:/.m2/repository</localRepository>
</settings>

If you are using IntelliJ: Go to IntelliJ > clicking the right mouse button on "pom.xml" > maven > create "settings.xml"

with its content:

<settings>
      xmlns="yourcontent"
      xmlns:xsi="yourcontent"
      xsi:schemaLocation="yourcontent.xsd">
  <localRepository>c:/.m2/repository</localRepository>
</settings>

Solution 17 - Java

In my case the error was showing because system java version was different from intellijj/eclipse java version. System and user had diff java versions. If you compile your code using one version and tried to run using a different version, it will error out. User java version is 1.8

#The system java version is 1.7.131
$ java -version
java version "1.7.0_131"

Long story short, make sure your code is compiled and ran by the same java version.

Solution 18 - Java

I am using legacy version of gradle plugins and this plugin solved the issue for me.

Usage (check source for more details):

> Build script snippet for plugins DSL for Gradle 2.1 and later > > plugins { > id "com.github.ManifestClasspath" version "0.1.0-RELEASE" > } > > Build script snippet for use in older Gradle versions or where dynamic > configuration is required > > buildscript { > repositories { > maven { > url "https://plugins.gradle.org/m2/" > } > } > dependencies { > classpath "gradle.plugin.com.github.viswaramamoorthy:gradle-util-plugins:0.1.0-RELEASE" > } > } > > apply plugin: "com.github.ManifestClasspath"

Solution 19 - Java

In a Windows machine, there is a limitation of the jar file name/path length in the command-line, due to which you see the below error message, I tried searching a lot, even I tried applying the above solution, some reason, it didn't work, I found the working snippet for Gradle (gradle-4.10.2-all.zip)

Error:

CreateProcess error=206, The filename or extension is too long

Use this below gradle.build code snippet to fix the above problem in IntelliJ or STS, or eclipse anything.

Gradle Code Fix:

apply plugin: 'application'

task pathingJar(type: Jar) {
    dependsOn configurations.runtime
    appendix = 'pathing'

    doFirst {
        manifest {
            attributes "Class-Path": configurations.runtimeClasspath.files.collect { it.getName() }.join(' ')
        }
    }
}

task copyToLib(type: Copy) {
    into "$buildDir/libs"
    from configurations.runtime
}

bootRun {
    systemProperties = System.properties
    //This below line is for if you have different profiles prod, dev etc...
    //systemProperty 'spring.profiles.active', 'dev'
    jvmArgs('-Djava.util.logging.config.file=none')
    mainClassName = "com.xxxx.Main"
    dependsOn pathingJar
    dependsOn copyToLib
    doFirst {
        classpath = files("$buildDir/classes/java/main", "$buildDir/resources/main", pathingJar.archivePath)
    }
}

Solution 20 - Java

it happens due to DataNucleus sometimes overwrite the Arguments with many paths.

You have to overwrite them with this:

-enhancerName ASM -api JDO -pu MediaToGo

Hope help you!

Solution 21 - Java

I got the same error. Tried solutions like cleaning, rebuild, invalidateCache, retart etc but nothing works.

I just have created a new folder with short name and copied all the files(app folder, gradle files etc) in new folder. Opened application in android studio and its working fine.

Solution 22 - Java

To fix this below error, I did enough research, not got any great solution, I prepared this script and it is working fine, thought to share to the public and make use of it and save there time.

>CreateProcess error=206, The filename or extension is too long

If you are using the Gradle build tool, and the executable file is placed in build/libs directory of your application. run.sh -> create this file in the root directory of your project, and copy below script in it, then go to git bash and type run.sh then enter. Hope this helps!

#!/bin/bash
dir_name=`pwd`
if [ $# == 1 ] && [ $1 == "debug" ]
then
	port=$RANDOM
	quit=0
	echo "Finding free port for debugging"
	while [ "$quit" -ne 1 ]; do
		netstat -anp | grep $port >> /dev/null
 		if [ $? -gt 0 ]; then
			quit=1
		else
			port=`expr $port + 1`
		fi
	done
	echo "Starting in Debug Mode on "$port
	gradle clean bootjar
	jar_name="build/libs/"`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'`
	#java -jar -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$port $jar_name	
elif [ $# == 1 ] && [ $1 == 'help' ]
then
	echo "please use this commands"
	echo "------------------------"
	echo "Start in Debug Mode: sh run.sh debug"
        echo "Start in Run Mode: sh run.sh"	
	echo "------------------------"
else
	gradle clean bootjar
	word_count=`ls -l ./build/libs/|grep jar|grep -v grep|wc -w`
	jar_name=`ls -l ./build/libs/|grep jar|grep -v grep|awk '{print $NF}'`	
	jar_path=build/libs/$jar_name
	echo $jar_name
	#java -jar $jar_path
fi

Hope this helps!!

Solution 23 - Java

For me it was wrong JDK path. Please make sure you have right path to the JDK file

File -> Project Structure

enter image description here

Solution 24 - Java

If you are using Android Studio try Invalidate Caches/ Restart.. option present in File menu

Solution 25 - Java

I used com.virgo47.ClasspathJar plugin to fix this issue https://plugins.gradle.org/plugin/com.virgo47.ClasspathJar

Solution 26 - Java

If you are using VSCode:

  1. create launch.json file insde .vscode/

  2. add

    {"configurations": [{ "type": "java","shortenCommandLine ": "auto",}]}
    

If you are using intellij :

  1. open .idea/workspace.xml

  2. inside <component name="PropertiesComponent"> add <property name="dynamic.classpath" value="true"/>

Solution 27 - Java

You can use below commands:

mklink /J c:\repo C:\<long path to your maven repository> 


mvn -Dmaven.repo.local=c:\repo any mvn command

Solution 28 - Java

Valid answer from this thread was the right answer for my special case. Specify the ORM folder path for datanucleus certainly reduce the java path compile.

https://stackoverflow.com/a/1219427/1469481

Solution 29 - Java

I got the error below when I run 'ant deploy'

Cannot run program "C:\java\jdk1.8.0_45\bin\java.exe": CreateProcess error=206, The filename or extension is too long

Fixed it by run 'ant clean' before it.

Solution 30 - Java

I got the same error in android studio. I was able to resolve it by running Build->Clean Project in the IDE.

Solution 31 - Java

I've had the same problem,but I was using netbeans instead.
I've found a solution so i'm sharing here because I haven't found this anywhere,so if you have this problem on netbeans,try this:
(names might be off since my netbeans is in portuguese) Right click project > properties > build > compiling > Uncheck run compilation on external VM.

Solution 32 - Java

This is because of your long project directory name, which gives you a very long CLASSPATH altogether. Either you need to reduce jars added at CLASSPATH (make sure removing unnecessary jars only) Or the best way is to reduce the project directory and import the project again. This will reduce the CLASSPATH. It worked for me.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmotiverView Question on Stackoverflow
Solution 1 - JavaespinchiView Answer on Stackoverflow
Solution 2 - JavaAlejandro B.View Answer on Stackoverflow
Solution 3 - JavaBrad MaceView Answer on Stackoverflow
Solution 4 - JavaactanView Answer on Stackoverflow
Solution 5 - JavaMarian KlühspiesView Answer on Stackoverflow
Solution 6 - JavamotiverView Answer on Stackoverflow
Solution 7 - JavaShygarView Answer on Stackoverflow
Solution 8 - JavaRodrigoView Answer on Stackoverflow
Solution 9 - JavaDon DView Answer on Stackoverflow
Solution 10 - JavaMaciej DzikowickiView Answer on Stackoverflow
Solution 11 - JavaScar CoderView Answer on Stackoverflow
Solution 12 - JavaIvan RodriguesView Answer on Stackoverflow
Solution 13 - JavaravibeliView Answer on Stackoverflow
Solution 14 - JavaSandeep JindalView Answer on Stackoverflow
Solution 15 - Javauser3272405View Answer on Stackoverflow
Solution 16 - JavaR. PereiraView Answer on Stackoverflow
Solution 17 - Javaz atefView Answer on Stackoverflow
Solution 18 - JavaIlkinView Answer on Stackoverflow
Solution 19 - JavaravibeliView Answer on Stackoverflow
Solution 20 - JavaRodrigohsbView Answer on Stackoverflow
Solution 21 - JavaTaraView Answer on Stackoverflow
Solution 22 - JavaravibeliView Answer on Stackoverflow
Solution 23 - JavaMuhammad Hamza ShahidView Answer on Stackoverflow
Solution 24 - JavaSagaRock101View Answer on Stackoverflow
Solution 25 - JavaNaeem GhummanView Answer on Stackoverflow
Solution 26 - Javamans.luv.2.codeView Answer on Stackoverflow
Solution 27 - JavaNirbhay RanaView Answer on Stackoverflow
Solution 28 - JavasmoraView Answer on Stackoverflow
Solution 29 - JavamaoyangView Answer on Stackoverflow
Solution 30 - JavaKiranView Answer on Stackoverflow
Solution 31 - JavaRégis B.View Answer on Stackoverflow
Solution 32 - JavaDeepesh kumar GuptaView Answer on Stackoverflow