使用命令行工具列出当前类路径中的可用类

时间:2014-11-26 21:15:03

标签: java linux classpath

我需要使用默认的JRE / JDK命令行工具检查当前目录中是否有可用的特定类。

我可以构建自己的类来列出它,或者检查特定的类是否可以从当前目录和当前的CLASSPATH环境变量中获取,但是这个选项不可用,因为我需要检查特定的类名是否可用。受保护的生产环境(只读)。

2 个答案:

答案 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,则您必须搜索文件系统。我使用findjargrep的组合,通常关注系统属性中定义的路径,例如java.endorsed.dirsjava.ext.dirs;显示了几种相关方法here