我们的应用程序使用ant进行编译。作为构建文件的一部分,我们有一个包含爬行并抓取应用程序文件夹中的所有java文件的include,并将它们添加到命令中,从而产生如下命令:
C:\Program Files\Java\jdk1.8.0_121\jre\bin\javaw.exe, -Xmx512m, -classpath, C:\app\WEB-INF\lib\aspectjtools.jar, org.aspectj.tools.ajc.Main, -d, C:\app\WEB-INF\classes, -deprecation, -source, 1.8, -target, 1.8, -classpath, C:\app\WEB-INF\lib\CAMsecurity.jar;C:\app\WEB-INF\lib\CamServices_FileUtilities.jar;...
该命令长度超过70000个字符。在本周添加了一些新文件后,我们开始遇到此错误:
Caused by: java.io.IOException: Cannot run program "C:\Program Files\Java\jdk1.8.0_121\jre\bin\javaw.exe": CreateProcess error=206, The filename or extension is too long
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:428)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442)
at org.aspectj.tools.ant.taskdefs.AjcTask.execInOtherVM(AjcTask.java:1473)
... 17 more
Caused by: java.io.IOException: CreateProcess error=206, The filename or extension is too long
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 22 more
我目前的理论是我们的命令长度超过了在windows上设置的限制,我能够找到几个似乎同意的引用。但是,我很乐意找到一种方法来确认这一点并可能解决问题。
谢谢:)
编辑:我忘了提及,我们使用AspectJ