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

mot*_*ver 80 java eclipse hibernate servlets resteasy

我在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时它停止工作.

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

esp*_*chi 39

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

引用Eclipse.org此错误报告中的一些答案,这些都是解决方法.选择对你来说最不痛苦的那个:

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

更新:2014年7月之后,有更好的方法(感谢@ Brad-Mace的答案如下:

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

  • 如果完全由于启动JVM时使用的类路径的长度,IntelliJ*如何不会出现此问题? (12认同)
  • "减少类路径"是一个很好的提示,但让我详细说明一下:在我的例子中,我尝试构建一个maven项目,并生成`-classpath`参数以包含所有依赖项.所以,这样的事情出现了:`C:\ Users\_es\.m2\repository\...; C:\ Users\_es\.m2\repository\... [...更多]`.将我的本地maven repo缓存移动到`D:\ m2`就可以了:Classpath缩小到'D:\ m2\...; D:\ m2\...` - 宾果!记得在maven配置中设置`localRepository`路径. (4认同)
  • @nitind"在IntelliJ IDEA中,他们用生成的类替换主类.它包含硬编码的类路径和启动原始主类的代码." 取自https://bugs.eclipse.org/bugs/show_bug.cgi?id=327193#c8 (3认同)
  • 在2014年,这个答案是错误的,而@Brad Mace的答案是正确的. (2认同)

Mar*_*ies 18

我在尝试在IntelliJ 2020.2Hibernate / JPA 控制台中执行JPQL查询时遇到了这个问题

将其添加到我的.idea/workspace.xml中修复了它

<component name="PropertiesComponent">
 
...
     <property name="dynamic.classpath" value="true"/>
 
...
 
</component>
Run Code Online (Sandbox Code Playgroud)

解决方案的来源:https://youtrack.jetbrains.com/issue/IDEA-166929 ?_ga=2.167622078.1290412178.1604511702-23036228.1574844686

  • 除了这个在 2020.2 上工作之外,其他解决方案都不起作用。 (4认同)
  • 是的,IntelliJ IDEA 2021.2.1 也是如此——只有这个解决了我的问题,谢谢! (2认同)

Bra*_*ace 17

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

  • 嗨 - 我究竟如何添加这个? (3认同)

Ale*_* B. 13

我今天遇到了这个问题,我能够使用这个Gradle插件解决它

这是github网址

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

plugins {
  id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"
}
Run Code Online (Sandbox Code Playgroud)

  • 现在我得到“主类名称尚未配置且无法解析”,尽管设置了 `attributes["Main-Class"]` (4认同)
  • 我尝试使用插件但没有效果。问题还是来了。请建议 (2认同)

act*_*tan 13

**在此处输入图片描述**

在 intellij 中,有一个“缩短命令行”的选项,选择“JAR 清单”或“@argFiles”就可以解决问题,基本上它会将您冗长的类路径放入 jar 文件或临时文件中

  • 工作了!我花了一段时间才弄清楚它在哪里。选择应用程序 &gt; 编辑配置 (2认同)

mot*_*ver 7

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


Shy*_*gar 7

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

<localRepository>C:\R</localRepository>
Run Code Online (Sandbox Code Playgroud)

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


Rod*_*igo 6

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


Don*_*n D 6

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

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

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

叉子=假

在ant构建文件的javac中。

<javac destdir="${build.dir}" fork="false" debug="on">
    <classpath .../>
    <src ... />
    <patternset ... />
</javac>
Run Code Online (Sandbox Code Playgroud)

这就是我的 ant build javac 现在的样子。要了解有关 fork 的更多信息,请参阅 ant 文档。