CreateProcess error = 206,运行main()方法时文件名或扩展名太长

问题描述 投票:74回答:19

我在eclipse helios中有这个错误:

执行命令行时发生异常。无法运行程序“C:\ Program Files(x86)\ Java \ jre6 \ bin \ javaw.exe”(在目录“C:\ Users \ motiver \ helios_workspace \ TimeTracker”中):CreateProcess error = 206,文件名或扩展名为太长

我研究了一下,但在使用Google App Engine时,大多数问题都与DataNucleus有关。但我没有使用与Google App Engine远程相关的任何内容。我正在使用JBOSS 6上的Servlet 3.0进行一个小项目。我正在使用Hibernate 4.1.2 for ORM和RESTEasy来公开Web服务。我创建了一个util文件,它有一个main()方法,基本上删除并重新创建模式。当我需要一个干净的数据库用于测试目的时,我运行main()方法。它在Tomcat 7上运行良好,但当我转移到JBoss 6时它停止工作。

任何提示或解决方案将不胜感激。

java eclipse hibernate servlets resteasy
19个回答
38
投票

这个问题没有简单的解决方案(如点击几下或简单命令)。

引用this bug report in Eclipse.org的一些答案,这些都是解决方法。选择对你来说最不痛苦的那个:

  • 减少类路径
  • 使用目录而不是jar文件
  • 使用包含所有其他jar的打包jar文件,使用清单文件中的classpath变量指向其他jar
  • 使用特殊的类加载器从配置文件中读取类路径
  • 尝试使用错误报告文档中的一个附加补丁
  • 使用自己的包装纸,例如蚂蚁
  • 转到IntelliJ(更新:正如@nitind指出的那样,这不是一个选项)

更新:2014年7月之后,有更好的方式(感谢@Brad-Mace's answer below

如果您已经创建了自己的构建文件而不是使用Project -> Generate Javadocs,那么您可以将useexternalfile="yes"添加到Javadoc任务中,该任务专门用于解决此问题。


1
投票

问题很旧,但仍然有效。每当新成员加入我的团队或新代码段添加到现有代码时,我就会经常遇到这种情况。我们遵循的简单解决方法是通过向上移动目录来“减少类路径”。

正如提到的问题,这不是eclipse特有的。我在IntelliJ Idea 14和2018中也遇到过这个问题。

经过长时间的研究,我发现解决方案是设置

fork = false

在ant构建文件的javc中。

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

这就是我的蚂蚁现在构建javac的方式。要了解有关叉子的更多信息,请refer ant documentation.


0
投票

它发生的原因是DataNucleus有时会用许多路径覆盖Arguments。

你必须用这个覆盖它们:

-enhancerName ASM -api JDO -pu MediaToGo

希望能帮到你!


0
投票

这个帖子的有效答案是我特殊情况的正确答案。指定datanucleus的ORM文件夹路径肯定会减少java路径编译。

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


0
投票

当我运行'ant deploy'时,我收到了以下错误

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

通过在它之前运行'ant clean'来修复它。


0
投票

我在android studio中遇到了同样的错误。我能够通过在IDE中运行Build-> Clean Project来解决它。


0
投票

这是因为你的长项目目录名称,它给你一个非常长的CLASSPATH。要么你需要减少在CLASSPATH添加的jar(确保只删除不必要的jar)或者最好的方法是减少项目目录并再次导入项目。这将减少CLASSPATH。它对我有用。


0
投票

我遇到了同样的问题,但我使用的是netbeans。 我找到了一个解决方案,所以我在这里分享,因为我没有在任何地方找到这个,所以如果你在netbeans上有这个问题,试试这个: (由于我的netbeans是葡萄牙语,名称可能已关闭)右键单击项目>属性>构建>编译>取消选中在外部VM上运行编译。


0
投票

我得到了同样的错误。尝试清理,重建,invalidateCache,retart等解决方案但没有任何作用。

我刚刚创建了一个短名称的新文件夹,并将所有文件(app文件夹,gradle文件等)复制到新文件夹中。在android studio中打开应用程序,它的工作正常。


0
投票

解决它:

如果您使用的是Eclipse:

将.m2存储库移动到

c:\转到Eclipse> Windows / Preferences / Maven / User Settings - >使用其内容创建自己的setting.xml:

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

如果您使用的是IntelliJ:转到IntelliJ>在“pom.xml”上单击鼠标右键> maven> create“settings.xml”

内容如下:

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

0
投票

在我的情况下,错误显示是因为系统java版本与intellijj / eclipse java版本不同。系统和用户有diff java版本。如果您使用一个版本编译代码并尝试使用其他版本运行,则会出错。 User java version is 1.8

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

简而言之,请确保您的代码是由相同的Java版本编译和运行的。


16
投票

如果您创建自己的构建文件而不是使用Project -> Generate Javadocs,则可以将useexternalfile="yes"添加到javadoc任务中,该任务专门用于解决此问题。


11
投票

我今天遇到了这个问题,我能够使用this Gradle plugin来解决它

这是github url is this

如果你像我一样,不知道Gradle是什么,但需要运行后端来完成前端工作,那么你需要做的是找到正在调用的build.gradle文件来启动你的BE服务器并将其添加到顶端:

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

6
投票

在这里回答我自己的问题,以便解决方案不会被置于评论中。我从eclipse中将项目导出为可运行的jar并执行命令行“java -jar MyJar.jar”,它的工作原理非常好


6
投票

尝试更新您的Eclipse版本,该问题最近已关闭(2013-03-12)。检查错误报告https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193


4
投票

我在调用Maven时遇到了同样的错误。

我问题的根本原因是classpath非常庞大。更新类路径修复了问题。


3
投票

在bug报告Bug 327193中,它被认为是固定的,但最近发生在Eclipse Kepler 4.3.2上。

请下载Eclipse Juno或更新版本的补丁:

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

  1. 下载后备份现有的eclipse / plugins / org.eclipse.jdt.launching_3。*。jar
  2. 将补丁中的类复制并粘贴到org.eclipse.jdt.launching JAR(替换现有文件)。
  3. 重启Eclipse。

2
投票

这不是专门针对eclipse的,但我解决这个问题的方法是创建一个指向我的maven存储库的符号链接,并将其指向“C:\ R”之类的东西。然后我将以下内容添加到我的settings.xml文件中:

<localRepository>C:\R</localRepository>

maven存储库路径导致我的Windows机器中的长度问题。


1
投票

试试这个:

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

© www.soinside.com 2019 - 2024. All rights reserved.