diff --git a/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java b/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java index 7cb36003289..3e0ec5abd15 100644 --- a/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java +++ b/langtools/src/share/classes/com/sun/tools/javac/file/Paths.java @@ -247,10 +247,16 @@ public class Paths { 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 --git a/langtools/test/tools/javac/Paths/Class-Path.sh b/langtools/test/tools/javac/Paths/Class-Path.sh index e52184ff519..7cdb4a71ea9 100644 --- a/langtools/test/tools/javac/Paths/Class-Path.sh +++ b/langtools/test/tools/javac/Paths/Class-Path.sh @@ -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" umf MANIFEST.MF "Hello.jar" # 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 --git a/langtools/test/tools/javac/Paths/Class-Path2.sh b/langtools/test/tools/javac/Paths/Class-Path2.sh new file mode 100644 index 00000000000..180ba7c7f77 --- /dev/null +++ b/langtools/test/tools/javac/Paths/Class-Path2.sh @@ -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 <