162

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.

5
  • possible duplicate of CreateProcess error=206, The filename or extension is too long Commented May 9, 2012 at 15:55
  • Might be useful: bugs.eclipse.org/bugs/show_bug.cgi?id=327193 Commented May 9, 2012 at 16:01
  • I want to understand whether C:\Program Files (x86)\Java\jre6\bin\javaw.exe is long or the other one C:\Users\motiver\helios_workspace\TimeTracker. I'm also having the same problem. Commented Feb 27, 2017 at 5:22
  • 2
    Posterity: I had a similar situation but, with a simple enterprise application deployed on WLS and client from on Eclipse. What I noticed was the classpath was enormous as Eclipse, by default, included entire WLS library(all jars). I removed it and added, just, weblogic.jar(only required). Afterwards, it worked fine. So, by my observation, just remove unnecessary jars. Commented Jan 11, 2019 at 12:18
  • Related question: stackoverflow.com/q/201816/873282 Commented Jul 3, 2024 at 23:24

35 Answers 35

63

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.

Sign up to request clarification or add additional context in comments.

8 Comments

How would IntelliJ not have this problem if it's entirely because of the length of the classpath used when launching the JVM?
This might be eclipse problem only, I am able to run the app using maven.
@nitind "In IntelliJ IDEA they substitute the main class with a generated one. It contains the hardcoded classpath and the code to launch the original main class." Taken from bugs.eclipse.org/bugs/show_bug.cgi?id=327193#c8
In 2014, this answer is wrong and the one by @Brad Mace is correct.
"Reduce the classpath" is a nice hint, but let me elaborate a little bit on this: In my case, I tried to build a maven project, and the -classpath argument was generated to contain all the dependencies. So, something like this came out: C:\Users\myself\.m2\repository\…;C:\Users\myself\.m2\repository\…[…tons more]. Moving my local maven repo cache to D:\m2 did the trick: Classpath shrank down to D:\m2\…;D:\m2\… - bingo! Remember to set the localRepository path in your maven config.
|
26

**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

2 Comments

Worked!. Took me for a while to figure out where it is. Select Application > Edit Configurations
Alternative methods to shorten command line: stackoverflow.com/questions/47926382/…
24

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.

2 Comments

Hi - how exactly do I add this?
@PrateekNarendra you'd add it in your ant buildfile (build.xml): ant.apache.org/manual/Tasks/javadoc.html
24

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" } 

4 Comments

Now I get "Main class name has not been configured and it could not be resolved", despite having set attributes["Main-Class"]
I tried using plugin but no effect . Issue is still coming. Please suggest
For me a similar plugin worked by adding plugins { id "com.github.ManifestClasspath" version "0.1.0-RELEASE" } and mainClassName = "com.sample.YourMainClass"
That plugin is from 2018, there is one more recent from 2019: plugins.gradle.org/plugin/com.redock.classpathtofile
23

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

5 Comments

None of the other solutions but this worked on 2020.2.
yep, same for IntelliJ IDEA 2021.2.1 -- this and only this solved my problem, thanks!
Stumbled about this problem and my answer one year later. Issue still exists
@MarianKlühspies, any similar solution for eclipse IDE as well?
@Ravi besides migrating to IntelliJ - no :P
9

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

Comments

8

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.

Comments

7

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

Comments

7

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.

Comments

4

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.

2 Comments

This worked for me. Note that applying this removed my JDK Java installations from Installed JREs. I had to re-add them again. Only 1 JRE installation persisted.
Funny thing, you look for answers on SO on your issue and one of the answers is from a person you used to study/work with :)
4

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.

1 Comment

Adding either of the two results in > Main class name has not been configured and it could not be resolved Any idea how to go around it? I have no idea what Gradle is, unfortunately
4

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

1 Comment

This is not working in my case. I had studio's JRE in shortest path possible in directory still the error came. only resolution so far deleting java.exe process.
3

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> 

Comments

3

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" 

Comments

2

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.

2 Comments

A dumb question, but what needs to replaced in xxx?
If you have Application.java having main method and this class is in package example: com.example.demo then in build.gradle you have to mention mainClassName = "com.example.demo.Application"
2

I have a working solution. When you run spring boot project using this command externally mvn:spring-boot:run and you get such error.

Resolution:

  1. Move your .m2 folder from this location

C:\Users\window_profile_name

to this

C:\

  1. Now Go to maven installed location

C:\Program Files\apache-maven-3.8.4\conf

find and open settings.xml file in VS Code or any good editor.

3: In settings.xml file, go to settings tag-

<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"> 

you will find a localRepository tag, now uncomment it and modify the tag to consume updated .m2 directory or add the below tag- and add the localRepository tag below settings tag with this tag-

 <localRepository>C:/.m2/repository</localRepository> 

and save the settings.xml as an administrator.

Voila! Now run your project again.

Comments

1

Try this:

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

Comments

1

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.

Comments

1

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: 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.

3 Comments

Updating the classpath - how?
A very vague answer. How the heck did you update classpath?
There are multiple ways to update classpath e.g. wildcard.
1

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) } } 

Comments

1

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

Comments

1

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"/>

Comments

1

I encountered the same problem today. Even though the error message mentioned the java.exe path and your project application path in the error message. However, even changing the paths for those two would not help at all.

Instead, the path you need to shorten is the .m2/repository path.

After shortening my local's repository's path by pasting the repository in C:\ and update my settings.xml's local repository, it worked.

<localRepository>C:\repository</localRepository> 

I am not saying the repository must be in C:\. I am talking about the path that needs to be shortened is actually your local repository folder path.

Comments

0

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!

Comments

0

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

Comments

0

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.

2 Comments

What if I am using Android Studio? I am also receiving this same issue
I am using intelliJ
0

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

Comments

0

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.

Comments

0

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.

Comments

0

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.