我需要使用默认的JRE / JDK命令行工具检查当前目录中是否有可用的特定类。
我可以构建自己的类来列出它,或者检查特定的类是否可以从当前目录和当前的CLASSPATH环境变量中获取,但是这个选项不可用,因为我需要检查特定的类名是否可用。受保护的生产环境(只读)。
答案 0 :(得分:3)
您可以使用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
答案 1 :(得分:1)
您可以使用java
命令的-verbose
选项,搜索特定类的完全限定名称。
$ java -verbose -jar MyProgram.jar | grep "java.lang.String" [Loaded java.lang.String from /Library/Java/…/Contents/Home/jre/lib/rt.jar] [Loaded java.lang.StringBuffer from /Library/Java/…/Contents/Home/jre/lib/rt.jar] …
附录:我想查看环境的课程可用性。
如果从java
命令行运行,将搜索-classpath
选项或CLASSPATH
环境变量中指定的路径。如果您是从JAR运行,则example的清单Class-Path
属性会取消这些设置。
如果您尝试以这些方式找到可能 无法访问的必需JAR,则您必须搜索文件系统。我使用find
,jar
和grep
的组合,通常关注系统属性中定义的路径,例如java.endorsed.dirs
和java.ext.dirs
;显示了几种相关方法here。