JDK-6561870 : Long javac compile lines fail due to command line length issues (agent compiles?)
  • Type: Bug
  • Component: hotspot
  • Sub-Component: svc
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2007-05-24
  • Updated: 2011-04-23
  • Resolved: 2011-04-23
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u25Fixed 7Fixed hs20Fixed
Related Reports
Relates :  
The javac compile lines in building the hotspot agent can fail on some Linux systems if the base directory of the workspace exceeds 55 characters or so. The command line length limit is being exceeded.

This makes it awkward for anyone building the openjdk or open hotspot in any arbitrary directory.

SUGGESTED FIX This fix causes sa-jdi.jar to be rebuilt every time. See 6985848.

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot/hotspot/rev/ea175c1b79ce

EVALUATION http://hg.openjdk.java.net/jdk7/hotspot-rt/hotspot/rev/ea175c1b79ce

SUGGESTED FIX See the attached 6561870-webrev-cr1.tgz for the proposed fix for both Linux and Solaris after changes from code review round 0.

SUGGESTED FIX See the attached 6561870-webrev-cr0.tgz for the proposed fix for both Linux and Solaris.

EVALUATION The description pretty much says it all. Matthias Klose has provided a fix for this so I'll shepherd it through JPRT into RT_Baseline.

SUGGESTED FIX The javac compiles should be done with the '@filename' option, where the list of filenames is in a file that is read in. And you can't just echo "all filenames" > filename, because that echo line would be too long too. You need to somehow create this filename without having really long command lines.