aoqi@0: #!/bin/sh aoqi@0: aoqi@0: # aoqi@0: # Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. aoqi@0: # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@0: # aoqi@0: # This code is free software; you can redistribute it and/or modify it aoqi@0: # under the terms of the GNU General Public License version 2 only, as aoqi@0: # published by the Free Software Foundation. aoqi@0: # aoqi@0: # This code is distributed in the hope that it will be useful, but WITHOUT aoqi@0: # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@0: # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@0: # version 2 for more details (a copy is included in the LICENSE file that aoqi@0: # accompanied this code). aoqi@0: # aoqi@0: # You should have received a copy of the GNU General Public License version aoqi@0: # 2 along with this work; if not, write to the Free Software Foundation, aoqi@0: # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@0: # aoqi@0: # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@0: # or visit www.oracle.com if you need additional information or have any aoqi@0: # questions. aoqi@0: # aoqi@0: aoqi@0: # aoqi@0: # @test aoqi@0: # @bug 4758537 4809833 aoqi@0: # @summary Test that javac and java find files in similar ways aoqi@0: # @author Martin Buchholz aoqi@0: # aoqi@0: # @run shell/timeout=600 MineField.sh aoqi@0: aoqi@0: # To run this test manually, simply do ./MineField.sh aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # The search order for classes used by both java and javac is: aoqi@0: # aoqi@0: # -Xbootclasspath/p: aoqi@0: # -endorseddirs or -Djava.endorsed.dirs= (search for jar/zip only) aoqi@0: # -bootclasspath or -Xbootclasspath: aoqi@0: # -Xbootclasspath/a: aoqi@0: # -extdirs or -Djava.ext.dirs= (search for jar/zip only) aoqi@0: # -classpath , -cp , env CLASSPATH= aoqi@0: # aoqi@0: # Peculiarities of the class file search: aoqi@0: # - Empty elements of the (user) classpath default to ".", aoqi@0: # while empty elements of other paths are ignored. aoqi@0: # - Only for the user classpath is an empty string value equivalent to "." aoqi@0: # - Specifying a bootclasspath on the command line obliterates any aoqi@0: # previous -Xbootclasspath/p: or -Xbootclasspath/a: command line flags. aoqi@0: #---------------------------------------------------------------- aoqi@0: aoqi@0: . ${TESTSRC-.}/Util.sh aoqi@0: aoqi@0: set -u aoqi@0: aoqi@0: BCP=`DefaultBootClassPath` aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # Prepare the "Minefield" aoqi@0: #---------------------------------------------------------------- aoqi@0: Cleanup() { aoqi@0: Sys rm -rf GooSrc GooJar GooZip GooClass aoqi@0: Sys rm -rf BadSrc BadJar BadZip BadClass aoqi@0: Sys rm -rf OneDir *.class Main.java MANIFEST.MF aoqi@0: } aoqi@0: aoqi@0: Cleanup aoqi@0: Sys mkdir GooSrc GooJar GooZip GooClass aoqi@0: Sys mkdir BadSrc BadJar BadZip BadClass aoqi@0: aoqi@0: echo 'public class Lib {public static void f(){}}' > Lib.java aoqi@0: Sys "$javac" ${TESTTOOLVMOPTS} Lib.java aoqi@0: Sys "$jar" cf GooJar/Lib.jar Lib.class aoqi@0: Sys "$jar" cf GooZip/Lib.zip Lib.class aoqi@0: Sys mv Lib.class GooClass/. aoqi@0: Sys mv Lib.java GooSrc/. aoqi@0: CheckFiles GooZip/Lib.zip GooJar/Lib.jar GooSrc/Lib.java aoqi@0: aoqi@0: echo 'public class Lib {/* Bad */}' > Lib.java aoqi@0: Sys "$javac" ${TESTTOOLVMOPTS} Lib.java aoqi@0: Sys "$jar" cf BadJar/Lib.jar Lib.class aoqi@0: Sys "$jar" cf BadZip/Lib.zip Lib.class aoqi@0: Sys mv Lib.class BadClass/. aoqi@0: Sys mv Lib.java BadSrc/. aoqi@0: CheckFiles BadZip/Lib.zip BadJar/Lib.jar BadSrc/Lib.java aoqi@0: aoqi@0: echo 'public class Main {public static void main(String[] a) {Lib.f();}}' > Main.java aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # Verify that javac class search order is the same as java's aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -J-Djava.endorsed.dirs="GooJar" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \ aoqi@0: -J-Djava.endorsed.dirs="BadJar${PS}GooZip" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Djava.endorsed.dirs="GooJar" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \ aoqi@0: -Djava.endorsed.dirs="BadJar${PS}GooZip" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -bootclasspath "$BCP${PS}BadZip/Lib.zip" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass${PS}GooClass" \ aoqi@0: -bootclasspath "$BCP${PS}GooZip/Lib.zip${PS}BadClass" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadJar/Lib.jar" \ aoqi@0: -Xbootclasspath:"$BCP${PS}GooClass" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -Xbootclasspath:"$BCP${PS}BadZip/Lib.zip" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass${PS}GooClass" \ aoqi@0: -Xbootclasspath:"$BCP${PS}GooZip/Lib.zip${PS}BadClass" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -bootclasspath "$BCP${PS}GooZip/Lib.zip" \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -bootclasspath "$BCP${PS}BadZip/Lib.zip" \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath:"$BCP${PS}GooClass" \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath:"$BCP${PS}BadClass" \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Xbootclasspath/a:"GooClass" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadClass" \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Xbootclasspath/a:"GooClass" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass${PS}BadClass" \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -J-Djava.endorsed.dirs="BadZip" \ aoqi@0: -bootclasspath "GooClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -bootclasspath "BadClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -Djava.endorsed.dirs="BadZip" \ aoqi@0: -Xbootclasspath:"GooClass${PS}$BCP" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: -Xbootclasspath/a:"GooClass" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"GooClass" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: -Xbootclasspath/a:"GooClass" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/p:"BadClass" \ aoqi@0: -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -J-Djava.endorsed.dirs="BadZip" \ aoqi@0: -Xbootclasspath:"GooClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -endorseddirs "BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Djava.endorsed.dirs="BadZip" \ aoqi@0: -Xbootclasspath:"GooClass${PS}$BCP" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -Xbootclasspath:"BadClass${PS}$BCP" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: -extdirs "GooZip" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Xbootclasspath/a:"GooClass${PS}BadClass" \ aoqi@0: -extdirs "BadZip" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/a:"BadClass" \ aoqi@0: -Djava.ext.dirs="GooZip" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath/a:"GooClass${PS}BadClass" \ aoqi@0: -Djava.ext.dirs="BadZip" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -bootclasspath "$BCP${PS}BadJar/Lib.jar" \ aoqi@0: -J-Djava.ext.dir="GooJar" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -bootclasspath "$BCP${PS}GooJar/Lib.jar${PS}BadClass" \ aoqi@0: -J-Djava.ext.dir="BadJar" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath:"$BCP${PS}BadJar/Lib.jar" \ aoqi@0: -Djava.ext.dirs="GooJar" \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Xbootclasspath:"$BCP${PS}GooJar/Lib.jar${PS}BadClass" \ aoqi@0: -Djava.ext.dirs="BadJar" \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -extdirs "GooClass${PS}BadZip" \ aoqi@0: -cp "GooZip/Lib.zip" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -extdirs "BadClass${PS}GooZip${PS}BadJar" \ aoqi@0: -cp "BadZip/Lib.zip" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -Djava.ext.dirs="GooZip${PS}BadJar" \ aoqi@0: -classpath "BadZip/Lib.zip" \ aoqi@0: Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} \ aoqi@0: -J-Djava.ext.dirs="GooZip${PS}BadJar" \ aoqi@0: -classpath "BadZip/Lib.zip" \ aoqi@0: Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} \ aoqi@0: -Djava.ext.dirs="GooClass${PS}BadZip" \ aoqi@0: -cp "GooZip/Lib.zip${PS}." \ aoqi@0: Main aoqi@0: Success "$java" ${TESTVMOPTS} \ aoqi@0: -Djava.ext.dirs="GooZip${PS}BadJar" \ aoqi@0: -cp "BadZip/Lib.zip${PS}." \ aoqi@0: Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} -classpath "BadClass${PS}GooClass" Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} -classpath "GooClass${PS}BadClass" Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} -classpath "BadClass${PS}GooClass${PS}." Main aoqi@0: Success "$java" ${TESTVMOPTS} -classpath "GooClass${PS}BadClass${PS}." Main aoqi@0: aoqi@0: Failure "$javac" ${TESTTOOLVMOPTS} -cp "BadJar/Lib.jar${PS}GooZip/Lib.zip" Main.java aoqi@0: Success "$javac" ${TESTTOOLVMOPTS} -cp "GooJar/Lib.jar${PS}BadZip/Lib.zip" Main.java aoqi@0: Failure "$java" ${TESTVMOPTS} -cp "BadJar/Lib.jar${PS}${PS}GooZip/Lib.zip" Main aoqi@0: Success "$java" ${TESTVMOPTS} -cp "GooJar/Lib.jar${PS}${PS}BadZip/Lib.zip" Main aoqi@0: aoqi@0: Failure env CLASSPATH="BadZip/Lib.zip${PS}GooJar/Lib.jar" "$javac" ${TESTTOOLVMOPTS} Main.java aoqi@0: Success env CLASSPATH="GooZip/Lib.zip${PS}BadJar/Lib.jar" "$javac" ${TESTTOOLVMOPTS} Main.java aoqi@0: Failure env CLASSPATH="${PS}BadZip/Lib.zip${PS}GooJar/Lib.jar" "$java" ${TESTVMOPTS} Main aoqi@0: Success env CLASSPATH="${PS}GooZip/Lib.zip${PS}BadJar/Lib.jar" "$java" ${TESTVMOPTS} Main aoqi@0: aoqi@0: #---------------------------------------------------------------- aoqi@0: # Check behavior of empty paths and empty path elements aoqi@0: #---------------------------------------------------------------- aoqi@0: In() { cd "$1"; shift; "$@"; cd ..; } aoqi@0: aoqi@0: In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -cp ".." ../Main.java aoqi@0: In GooClass Failure "$java" ${TESTVMOPTS} -cp ".." Main aoqi@0: aoqi@0: # Unspecified classpath defaults to "." aoqi@0: Sys mkdir OneDir; Sys cp -p Main.java GooClass/Lib.class OneDir/. aoqi@0: In OneDir Success "$javac" ${TESTTOOLVMOPTS} Main.java aoqi@0: In OneDir Success "$java" ${TESTVMOPTS} Main aoqi@0: aoqi@0: # Empty classpath elements mean "." aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "${PS}.." ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -cp "${PS}.." Main aoqi@0: aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "..${PS}" ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -cp "..${PS}" Main aoqi@0: aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "..${PS}${PS}/xyzzy" ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -cp "..${PS}${PS}/xyzzy" Main aoqi@0: aoqi@0: # All other empty path elements are ignored. aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs "" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$java" ${TESTVMOPTS} -Djava.ext.dirs="" -cp ".." Main aoqi@0: aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs "${PS}" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="${PS}" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$java" ${TESTVMOPTS} -Djava.ext.dirs="${PS}" -cp ".." Main aoqi@0: aoqi@0: In GooJar Success "$javac" ${TESTTOOLVMOPTS} -extdirs "." -cp ".." ../Main.java aoqi@0: In GooJar Success "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="." -cp ".." ../Main.java aoqi@0: In GooJar Success "$java" ${TESTVMOPTS} -Djava.ext.dirs="." -cp ".." Main aoqi@0: aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -Djava.endorsed.dirs="" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$java" ${TESTVMOPTS} -Djava.endorsed.dirs="" -cp ".." Main aoqi@0: aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="${PS}" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -endorseddirs "${PS}" -cp ".." ../Main.java aoqi@0: In GooJar Failure "$java" ${TESTVMOPTS} -Djava.endorsed.dirs="${PS}" -cp ".." Main aoqi@0: aoqi@0: In GooJar Success "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="." -cp ".." ../Main.java aoqi@0: In GooJar Success "$javac" ${TESTTOOLVMOPTS} -Djava.endorsed.dirs="." -cp ".." ../Main.java aoqi@0: In GooJar Success "$java" ${TESTVMOPTS} -Djava.endorsed.dirs="." -cp ".." Main aoqi@0: aoqi@0: In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p: -cp ".." ../Main.java aoqi@0: In GooClass Failure "$java" ${TESTVMOPTS} -Xbootclasspath/p: -cp ".." Main aoqi@0: aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p:. -cp ".." ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -Xbootclasspath/p:. -cp ".." Main aoqi@0: aoqi@0: In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP" -cp ".." ../Main.java aoqi@0: In GooClass Failure "$java" ${TESTVMOPTS} -Xbootclasspath:"$BCP" -cp ".." Main aoqi@0: aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP${PS}." -cp ".." ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -Xbootclasspath:"$BCP${PS}." -cp ".." Main aoqi@0: aoqi@0: In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/a: -cp ".." ../Main.java aoqi@0: In GooClass Failure "$java" ${TESTVMOPTS} -Xbootclasspath/a: -cp ".." Main aoqi@0: aoqi@0: In GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/a:. -cp ".." ../Main.java aoqi@0: In GooClass Success "$java" ${TESTVMOPTS} -Xbootclasspath/a:. -cp ".." Main aoqi@0: aoqi@0: Cleanup aoqi@0: aoqi@0: Bottom Line