# HG changeset patch # User jjg # Date 1297379133 28800 # Node ID 5e31b2eb5aa3b2e48f045db8df5d971921038a67 # Parent 4f9cb86f8e39f7c2a8c1a11ef873be1788e09e09 6485027: javac incorrectly handles relative paths in manifest classpath Reviewed-by: mcimadamore diff -r 4f9cb86f8e39 -r 5e31b2eb5aa3 langtools/src/share/classes/com/sun/tools/javac/file/Paths.java --- a/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java Thu Feb 10 14:27:34 2011 -0800 +++ b/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java Thu Feb 10 15:05:33 2011 -0800 @@ -247,10 +247,16 @@ public Path() { super(); } public Path addDirectories(String dirs, boolean warn) { - if (dirs != null) - for (File dir : getPathEntries(dirs)) - addDirectory(dir, warn); - return this; + boolean prev = expandJarClassPaths; + expandJarClassPaths = true; + try { + if (dirs != null) + for (File dir : getPathEntries(dirs)) + addDirectory(dir, warn); + return this; + } finally { + expandJarClassPaths = prev; + } } public Path addDirectories(String dirs) { diff -r 4f9cb86f8e39 -r 5e31b2eb5aa3 langtools/test/tools/javac/Paths/Class-Path.sh --- a/langtools/test/tools/javac/Paths/Class-Path.sh Thu Feb 10 14:27:34 2011 -0800 +++ b/langtools/test/tools/javac/Paths/Class-Path.sh Thu Feb 10 15:05:33 2011 -0800 @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright (c) 2003, 2005, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,7 @@ # -# @test @(#)Class-Path.sh 1.3 03/10/31 +# @test # @bug 4212732 # @summary Test handling of the Class-Path attribute in jar file manifests # @author Martin Buchholz @@ -184,8 +184,8 @@ # Success "$jar" cfe "Hello.jar" "Hello" Bye.class -# Jar creation and update when there is no manifest and inputfiles -specified +# Jar creation and update when there is no manifest and inputfiles +# specified Failure "$jar" cvf "A.jar" Failure "$jar" uvf "A.jar" diff -r 4f9cb86f8e39 -r 5e31b2eb5aa3 langtools/test/tools/javac/Paths/Class-Path2.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/Paths/Class-Path2.sh Thu Feb 10 15:05:33 2011 -0800 @@ -0,0 +1,111 @@ +#!/bin/sh +# +# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# @test +# @bug 4212732 6485027 +# @summary Test handling of the Class-Path attribute in jar file manifests +# @author Martin Buchholz +# +# @run shell Class-Path2.sh + +# To run this test manually, simply do ./Class-Path2.sh + +. ${TESTSRC-.}/Util.sh + +set -u + +Cleanup() { + Sys rm -rf pkg Main.java Main.class Main.jar jars + Sys rm -rf MANIFEST.MF A.jar B.zip +} + +Cleanup +Sys mkdir pkg + +#---------------------------------------------------------------- +# Create mutually referential jar files +#---------------------------------------------------------------- +cat >pkg/A.java <pkg/B.java <Main.java <