提交 35679bbf 编写于 作者: J jjg

6934615: Relative classpaths in jarfile manifests are handled inefficiently by rmic

Reviewed-by: darcy
上级 6d672e40
...@@ -429,7 +429,7 @@ public class BatchEnvironment extends sun.tools.javac.BatchEnvironment { ...@@ -429,7 +429,7 @@ public class BatchEnvironment extends sun.tools.javac.BatchEnvironment {
st.hasMoreTokens();) { st.hasMoreTokens();) {
String elt = st.nextToken(); String elt = st.nextToken();
if (jarParent != null) if (jarParent != null)
elt = new File(jarParent, elt).toString(); elt = new File(jarParent, elt).getCanonicalPath();
addFile(elt, warn); addFile(elt, warn);
} }
} finally { } finally {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#!/bin/sh #!/bin/sh
# @test # @test
# @bug 6473331 # @bug 6473331 6485027 6934615
# @summary Test handling of the Class-Path attribute in jar file manifests # @summary Test handling of the Class-Path attribute in jar file manifests
# for the rmic tool # for the rmic tool
# @author Andrey Ozerov # @author Andrey Ozerov
...@@ -65,26 +65,23 @@ EOF ...@@ -65,26 +65,23 @@ EOF
Sys "$javac" pkg/A.java pkg/B.java Sys "$javac" pkg/A.java pkg/B.java
# NOTE: Certain lines below are commented out in order to work around # NOTE: Previously, some lines were commented out and alternative lines
# bug 6485027, with alternative lines added as part of the workaround # provided, to work around javac bug 6485027. That bug, and related rmic
# as indicated. In particular, the mutally referential JAR files are # bug 6934615 have now been fixed, so most of the workarounds have been
# placed in the same directory instead of different directories, and # removed. However, javac still does not evaluate jar class paths on
# javac is not expected to handle the extensions directories cases. # the bootclasspath, including -extdirs.
#MkManifestWithClassPath "sub/B.zip" MkManifestWithClassPath "sub/B.zip"
MkManifestWithClassPath "B.zip" # 6485027 workaround
Sys "$jar" cmf MANIFEST.MF A.jar pkg/A.class Sys "$jar" cmf MANIFEST.MF A.jar pkg/A.class
#MkManifestWithClassPath "../A.jar" MkManifestWithClassPath "../A.jar"
MkManifestWithClassPath "A.jar" # 6485027 workaround
Sys "$jar" cmf MANIFEST.MF B.zip pkg/B.class Sys "$jar" cmf MANIFEST.MF B.zip pkg/B.class
Sys rm -rf pkg Sys rm -rf pkg
Sys mkdir jars Sys mkdir jars
Sys mv A.jar jars/. Sys mv A.jar jars/.
#Sys mkdir jars/sub Sys mkdir jars/sub
#Sys mv B.zip jars/sub/. Sys mv B.zip jars/sub/.
Sys mv B.zip jars/. # 6485027 workaround
cat >MainI.java <<EOF cat >MainI.java <<EOF
import pkg.*; import pkg.*;
...@@ -121,26 +118,22 @@ Success "$java" -classpath "jars/A.jar${PS}." Main ...@@ -121,26 +118,22 @@ Success "$java" -classpath "jars/A.jar${PS}." Main
Sys rm -f Main.class MainI.class Main_Stub.class Sys rm -f Main.class MainI.class Main_Stub.class
#Success "$javac" -classpath "jars/sub/B.zip" Main.java MainI.java Success "$javac" -classpath "jars/sub/B.zip" Main.java MainI.java
#Success "$rmic" -classpath "jars/sub/B.zip${PS}." Main Success "$rmic" -classpath "jars/sub/B.zip${PS}." Main
#Success "$java" -classpath "jars/sub/B.zip${PS}." Main Success "$java" -classpath "jars/sub/B.zip${PS}." Main
Success "$javac" -classpath "jars/B.zip" \
Main.java MainI.java # 6485027 workaround
Success "$rmic" -classpath "jars/B.zip${PS}." Main # 6485027 workaround
Success "$java" -classpath "jars/B.zip${PS}." Main # 6485027 workaround
#Sys rm -f Main.class MainI.class Main_Stub.class #Sys rm -f Main.class MainI.class Main_Stub.class
Sys rm -f Main_Stub.class # 6485027 workaround Sys rm -f Main_Stub.class # javac -extdirs workaround
#Success "$javac" -extdirs "jars" -classpath None Main.java MainI.java #Success "$javac" -extdirs "jars" -classpath None Main.java MainI.java
Success "$rmic" -extdirs "jars" -classpath . Main Success "$rmic" -extdirs "jars" -classpath . Main
Success "$java" -Djava.ext.dirs="jars" -cp . Main Success "$java" -Djava.ext.dirs="jars" -cp . Main
#Sys rm -f Main_Stub.class Sys rm -f Main_Stub.class
#
#Success "$javac" -extdirs "jars/sub" -classpath None Main.java MainI.java #Success "$javac" -extdirs "jars/sub" -classpath None Main.java MainI.java
#Success "$rmic" -extdirs "jars/sub" -classpath . Main Success "$rmic" -extdirs "jars/sub" -classpath . Main
#Success "$java" -Djava.ext.dirs="jars/sub" -cp . Main Success "$java" -Djava.ext.dirs="jars/sub" -cp . Main
Cleanup Cleanup
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册