我需要使用默认的JRE / JDK命令行工具来检查当前目录是否有特定的类。
我可以构build自己的类来列出它,或者检查当前目录和当前CLASSPATH环境variables是否可以访问特定的类,但是此选项不可用,因为我需要检查特定的类名是否可用于受保护的生产环境(只读)。
你可以使用javap
:
$ javap java.lang.String Compiled from "String.java" public final class java.lang.String implements java.io.Serializable [...] $ javap no.such.Class Error: class not found: no.such.Class
您可以使用java
命令的-verbose
选项并搜索特定类的完全限定名称。
$ java -verbose -jar MyProgram.jar | grep“java.lang.String” [从/Library/Java/.../Contents/Home/jre/lib/rt.jar加载的java.lang.String] [从/Library/Java/.../Contents/Home/jre/lib/rt.jar加载java.lang.StringBuffer] ...
附录: 我想检查一个环境的类可用性。
如果从java
命令行运行,则将搜索-classpath
选项或CLASSPATH
环境变量中指定的路径。 如果您从JAR运行,则清单的Class-Path
属性将取代这些设置。
如果您正在尝试查找可能无法以这些方式访问的必需JAR,则必须搜索文件系统。 我使用find
, jar
和grep
的组合,通常集中在系统属性中定义的路径,如java.endorsed.dirs
和java.ext.dirs
; 这里显示了几个相关的方法。