⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 minefield.sh

📁 是一款用JAVA 编写的编译器 具有很强的编译功能
💻 SH
字号:
#!/bin/sh## Copyright 2003 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,# CA 95054 USA or visit www.sun.com if you need additional information or# have any questions.### @test# @bug 4758537 4809833# @summary Test that javac and java find files in similar ways# @author Martin Buchholz## @run shell/timeout=600 MineField.sh# To run this test manually, simply do ./MineField.sh#----------------------------------------------------------------# The search order for classes used by both java and javac is:## -Xbootclasspath/p:<path># -endorseddirs <dirs> or -Djava.endorsed.dirs=<dirs> (search for jar/zip only)# -bootclasspath <path> or -Xbootclasspath:<path># -Xbootclasspath/a:<path># -extdirs <dirs> or -Djava.ext.dirs=<dirs> (search for jar/zip only)# -classpath <path>, -cp <path>, env CLASSPATH=<path>## Peculiarities of the class file search:# - Empty elements of the (user) classpath default to ".",#   while empty elements of other paths are ignored.# - Only for the user classpath is an empty string value equivalent to "."# - Specifying a bootclasspath on the command line obliterates any#   previous -Xbootclasspath/p: or -Xbootclasspath/a: command line flags.#----------------------------------------------------------------. ${TESTSRC-.}/Util.shset -uBCP=`DefaultBootClassPath`#----------------------------------------------------------------# Prepare the "Minefield"#----------------------------------------------------------------Cleanup() {    Sys rm -rf GooSrc GooJar GooZip GooClass    Sys rm -rf BadSrc BadJar BadZip BadClass    Sys rm -rf OneDir *.class Main.java MANIFEST.MF}CleanupSys mkdir  GooSrc GooJar GooZip GooClassSys mkdir  BadSrc BadJar BadZip BadClassecho 'public class Lib {public static void f(){}}' > Lib.javaSys "$javac" ${TESTTOOLVMOPTS} Lib.javaSys "$jar" cf GooJar/Lib.jar Lib.classSys "$jar" cf GooZip/Lib.zip Lib.classSys mv Lib.class GooClass/.Sys mv Lib.java GooSrc/.CheckFiles GooZip/Lib.zip GooJar/Lib.jar GooSrc/Lib.javaecho 'public class Lib {/* Bad */}' > Lib.javaSys "$javac" ${TESTTOOLVMOPTS} Lib.javaSys "$jar" cf BadJar/Lib.jar Lib.classSys "$jar" cf BadZip/Lib.zip Lib.classSys mv Lib.class BadClass/.Sys mv Lib.java BadSrc/.CheckFiles BadZip/Lib.zip BadJar/Lib.jar BadSrc/Lib.javaecho 'public class Main {public static void main(String[] a) {Lib.f();}}' > Main.java#----------------------------------------------------------------# Verify that javac class search order is the same as java's#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -J-Djava.endorsed.dirs="GooJar" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \    -J-Djava.endorsed.dirs="BadJar${PS}GooZip" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Djava.endorsed.dirs="GooJar" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \    -Djava.endorsed.dirs="BadJar${PS}GooZip" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -bootclasspath "$BCP${PS}BadZip/Lib.zip" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadClass${PS}GooClass" \    -bootclasspath "$BCP${PS}GooZip/Lib.zip${PS}BadClass" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadJar/Lib.jar" \    -Xbootclasspath:"$BCP${PS}GooClass" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -Xbootclasspath:"$BCP${PS}BadZip/Lib.zip" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"BadClass${PS}GooClass" \    -Xbootclasspath:"$BCP${PS}GooZip/Lib.zip${PS}BadClass" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -bootclasspath "$BCP${PS}GooZip/Lib.zip" \    -Xbootclasspath/p:"BadClass" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -bootclasspath "$BCP${PS}BadZip/Lib.zip" \    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath:"$BCP${PS}GooClass" \    -Xbootclasspath/p:"BadClass" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath:"$BCP${PS}BadClass" \    -Xbootclasspath/p:"GooClass${PS}BadJar/Lib.jar" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Xbootclasspath/a:"GooClass" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"GooClass${PS}BadClass" \    -Xbootclasspath/a:"BadClass" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Xbootclasspath/a:"GooClass" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"GooClass${PS}BadClass" \    -Xbootclasspath/a:"BadClass" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -J-Djava.endorsed.dirs="BadZip" \    -bootclasspath "GooClass${PS}$BCP" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \    -bootclasspath "BadClass${PS}$BCP" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -Djava.endorsed.dirs="BadZip" \    -Xbootclasspath:"GooClass${PS}$BCP" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \    -Xbootclasspath:"BadClass${PS}$BCP" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -Xbootclasspath:"BadClass${PS}$BCP" \    -Xbootclasspath/a:"GooClass" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \    -Xbootclasspath/a:"BadClass" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"GooClass" \    -Xbootclasspath:"BadClass${PS}$BCP" \    -Xbootclasspath/a:"GooClass" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/p:"BadClass" \    -Xbootclasspath:"GooClass${PS}BadClass${PS}$BCP" \    -Xbootclasspath/a:"BadClass" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -J-Djava.endorsed.dirs="BadZip" \    -Xbootclasspath:"GooClass${PS}$BCP" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -endorseddirs "BadClass${PS}GooZip${PS}BadJar" \    -Xbootclasspath:"BadClass${PS}$BCP" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \    -Xbootclasspath:"BadClass${PS}$BCP" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -J-Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \    -Xbootclasspath:"BadClass${PS}$BCP" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Djava.endorsed.dirs="BadZip" \    -Xbootclasspath:"GooClass${PS}$BCP" \    MainSuccess "$java" ${TESTVMOPTS} \    -Djava.endorsed.dirs="BadClass${PS}GooZip${PS}BadJar" \    -Xbootclasspath:"BadClass${PS}$BCP" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/a:"BadClass" \    -extdirs "GooZip" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Xbootclasspath/a:"GooClass${PS}BadClass" \    -extdirs "BadZip" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath/a:"BadClass" \    -Djava.ext.dirs="GooZip" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath/a:"GooClass${PS}BadClass" \    -Djava.ext.dirs="BadZip" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -bootclasspath "$BCP${PS}BadJar/Lib.jar" \    -J-Djava.ext.dir="GooJar" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -bootclasspath "$BCP${PS}GooJar/Lib.jar${PS}BadClass" \    -J-Djava.ext.dir="BadJar" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Xbootclasspath:"$BCP${PS}BadJar/Lib.jar" \    -Djava.ext.dirs="GooJar" \    MainSuccess "$java" ${TESTVMOPTS} \    -Xbootclasspath:"$BCP${PS}GooJar/Lib.jar${PS}BadClass" \    -Djava.ext.dirs="BadJar" \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} \    -extdirs "GooClass${PS}BadZip" \    -cp "GooZip/Lib.zip" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -extdirs "BadClass${PS}GooZip${PS}BadJar" \    -cp "BadZip/Lib.zip" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -Djava.ext.dirs="GooZip${PS}BadJar" \    -classpath "BadZip/Lib.zip" \    Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} \    -J-Djava.ext.dirs="GooZip${PS}BadJar" \    -classpath "BadZip/Lib.zip" \    Main.javaFailure "$java" ${TESTVMOPTS} \    -Djava.ext.dirs="GooClass${PS}BadZip" \    -cp "GooZip/Lib.zip${PS}." \    MainSuccess "$java" ${TESTVMOPTS} \    -Djava.ext.dirs="GooZip${PS}BadJar" \    -cp "BadZip/Lib.zip${PS}." \    Main#----------------------------------------------------------------Failure "$javac" ${TESTTOOLVMOPTS} -classpath "BadClass${PS}GooClass" Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} -classpath "GooClass${PS}BadClass" Main.javaFailure "$java" ${TESTVMOPTS}  -classpath "BadClass${PS}GooClass${PS}." MainSuccess "$java" ${TESTVMOPTS}  -classpath "GooClass${PS}BadClass${PS}." MainFailure "$javac" ${TESTTOOLVMOPTS} -cp "BadJar/Lib.jar${PS}GooZip/Lib.zip" Main.javaSuccess "$javac" ${TESTTOOLVMOPTS} -cp "GooJar/Lib.jar${PS}BadZip/Lib.zip" Main.javaFailure "$java" ${TESTVMOPTS}  -cp "BadJar/Lib.jar${PS}${PS}GooZip/Lib.zip" MainSuccess "$java" ${TESTVMOPTS}  -cp "GooJar/Lib.jar${PS}${PS}BadZip/Lib.zip" MainFailure env CLASSPATH="BadZip/Lib.zip${PS}GooJar/Lib.jar" "$javac" ${TESTTOOLVMOPTS} Main.javaSuccess env CLASSPATH="GooZip/Lib.zip${PS}BadJar/Lib.jar" "$javac" ${TESTTOOLVMOPTS} Main.javaFailure env CLASSPATH="${PS}BadZip/Lib.zip${PS}GooJar/Lib.jar" "$java" ${TESTVMOPTS} MainSuccess env CLASSPATH="${PS}GooZip/Lib.zip${PS}BadJar/Lib.jar" "$java" ${TESTVMOPTS} Main#----------------------------------------------------------------# Check behavior of empty paths and empty path elements#----------------------------------------------------------------In() { cd "$1"; shift; "$@"; cd ..; }In GooClass Failure "$javac" ${TESTTOOLVMOPTS} -cp ".." ../Main.javaIn GooClass Failure "$java" ${TESTVMOPTS}  -cp ".." Main# Unspecified classpath defaults to "."Sys mkdir OneDir; Sys cp -p Main.java GooClass/Lib.class OneDir/.In OneDir Success "$javac" ${TESTTOOLVMOPTS} Main.javaIn OneDir Success "$java" ${TESTVMOPTS}  Main# Empty classpath elements mean "."In GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "${PS}.." ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -cp "${PS}.." MainIn GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "..${PS}" ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -cp "..${PS}" MainIn GooClass Success "$javac" ${TESTTOOLVMOPTS} -cp "..${PS}${PS}/xyzzy" ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -cp "..${PS}${PS}/xyzzy" Main# All other empty path elements are ignored.In GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs "" -cp ".." ../Main.javaIn GooJar Failure "$java" ${TESTVMOPTS} -Djava.ext.dirs="" -cp ".." MainIn GooJar Failure "$javac" ${TESTTOOLVMOPTS} -extdirs        "${PS}" -cp ".." ../Main.javaIn GooJar Failure "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="${PS}" -cp ".." ../Main.javaIn GooJar Failure "$java" ${TESTVMOPTS}  -Djava.ext.dirs="${PS}" -cp ".." MainIn GooJar Success "$javac" ${TESTTOOLVMOPTS} -extdirs        "." -cp ".." ../Main.javaIn GooJar Success "$javac" ${TESTTOOLVMOPTS} -Djava.ext.dirs="." -cp ".." ../Main.javaIn GooJar Success "$java" ${TESTVMOPTS}  -Djava.ext.dirs="." -cp ".." MainIn GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="" -cp ".." ../Main.javaIn GooJar Failure "$javac" ${TESTTOOLVMOPTS}   -Djava.endorsed.dirs="" -cp ".." ../Main.javaIn GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="" -cp ".." MainIn GooJar Failure "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="${PS}" -cp ".." ../Main.javaIn GooJar Failure "$javac" ${TESTTOOLVMOPTS}   -endorseddirs        "${PS}" -cp ".." ../Main.javaIn GooJar Failure "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="${PS}" -cp ".." MainIn GooJar Success "$javac" ${TESTTOOLVMOPTS} -J-Djava.endorsed.dirs="." -cp ".." ../Main.javaIn GooJar Success "$javac" ${TESTTOOLVMOPTS}   -Djava.endorsed.dirs="." -cp ".." ../Main.javaIn GooJar Success "$java" ${TESTVMOPTS}    -Djava.endorsed.dirs="." -cp ".." MainIn GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p: -cp ".." ../Main.javaIn GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/p: -cp ".." MainIn GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/p:. -cp ".." ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath/p:. -cp ".." MainIn GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP" -cp ".." ../Main.javaIn GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP" -cp ".." MainIn GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath:"$BCP${PS}." -cp ".." ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath:"$BCP${PS}." -cp ".." MainIn GooClass Failure "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/a: -cp ".." ../Main.javaIn GooClass Failure "$java" ${TESTVMOPTS}  -Xbootclasspath/a: -cp ".." MainIn GooClass Success "$javac" ${TESTTOOLVMOPTS} -Xbootclasspath/a:. -cp ".." ../Main.javaIn GooClass Success "$java" ${TESTVMOPTS}  -Xbootclasspath/a:. -cp ".." MainCleanupBottom Line

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -