[ 
https://issues.apache.org/jira/browse/SUREFIRE-1376?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16056080#comment-16056080
 ] 

Guillaume Boué commented on SUREFIRE-1376:
------------------------------------------

[~tibor17]

You're right, it would also override the classpath in the manifest JAR, so this 
won't really work... We'd have to build the full classpath to pass it on the 
command-line, and this causes other issues when it is too long (command-line 
rejected).

Now, I can only think of generating the JAR to another fixed location, like 
{{java.io.tmpdir}} (where it is pretty much guaranteed no long path issues will 
be hit) instead of the build directory, but this would go against the 
{{tempDir}} configuration...

I had also found that JDK bug report, but I'm not sure it is the same since it 
appears to affect JDK 8 also, whereas using {{java -jar 
&#92;&#92;?&#92;<...>.jar}} worked fine with 8u121. By the way, the error when 
using JDK 7 with the {{&#92;&#92;?&#92;}} prefix in {{java -jar}} is:

bq. Error: Unable to access jarfile \\?\\\C:\...

Two backslashes were apparently added just before the drive letter but I have 
no idea why.

> "The forked VM terminated without properly saying goodbye" when running 
> Surefire in a very deep project structure on Windows
> ----------------------------------------------------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1376
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1376
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: Maven Failsafe Plugin, Maven Surefire Plugin
>    Affects Versions: 2.20
>         Environment: Windows
>            Reporter: Guillaume Boué
>            Assignee: Tibor Digana
>             Fix For: 2.20.1
>
>         Attachments: SUREFIRE-1376-prefix.patch
>
>
> When Surefire is ran on a project under a very long path (exceeding Windows' 
> {{MAX_PATH}}), the invocation fails with
> {noformat}
> org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM 
> terminated without properly saying goodbye. VM crash or System.exit called?
> {noformat}
> In the generated dumpstream, there is
> {noformat}
> # Created on 2017-05-28T10:17:09.474
> Error: Unable to access jarfile 
> C:\Users\Guillaume\Desktop\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\surefire-longpath-test-with-windows\target\surefire\surefirebooter2512478076549179739.jar
> {noformat}
> The problem is that the path to the JAR file exceeds the maximum path length 
> of 260 characters, and so it cannot be accessed.
> Prepending the path to the JAR file with {{&#92;&#92;?&#92;}}, [as documented 
> on 
> MSDN|https://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx#maxpath], 
> makes the test run again correctly. I've attached a possible patch with this 
> approach (SUREFIRE-1376-prefix.patch, that also handles UNC pathnames), but 
> perhaps there is a better way to tackle this problem.
> In order to reproduce this, it is possible to create a project under lots of 
> different subdirectories, something like:
> {noformat}
> └───surefire-longpath-test-with-windows
>     └───surefire-longpath-test-with-windows
>         └───surefire-longpath-test-with-windows
>             └───surefire-longpath-test-with-windows
>                 └───surefire-longpath-test-with-windows
>                     │   pom.xml
>                     │
>                     └───src
>                         └───test
>                             └───java
>                                 └───Test.java
> {noformat}
> As a side-note, this issue is behind the current Jenkins failures on 
> [maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows|https://builds.apache.org/job/maven-plugins-ITs-m3.1.x-with-maven-plugin-jdk-1.8_windows/3702/]
>  when running the ITs on the Assembly Plugin.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to