发现符号的路径

时间:2014-08-15 21:40:55

标签: java symbols

我的问题是Java是否在Python中没有像sys.path这样的东西,或者更具体的方法来找出符号的来源。我已经看到答案说“加载此工具"从一些外部来源,但似乎语言可以具备这种能力。

这方面的推动力是我桌面上的一个标准Hello.java示例打印" Hello,world!"在编译和运行之后,代码本身就是" Hello world!" (没有逗号)。喜欢高中英语或其他什么。删除我认为正在运行的Hello.class文件没有任何改变。那里有Hello.java同上。甚至更奇怪,当它存在时,编译器首先在其搜索路径中找到我的桌面上的源文件Hello.java。运行Hello.class时,javac Hello.java 更新。那我怎么找到我的神秘文件? Relent并使用grep

更新

所以,我应该猜到麻烦的文件是/Library/Java/Extensions中的(这是OS X),或者我的用户特定目录(前置~)。找到候选人之后,我用

进行了检查
> jar tf /Library/Java/Extensions/obscureName.jar > x.txt
> grep "Hello" x.txt
Hello.class

不知道这一点,正确的方法是搜索不同的系统属性,即java.ext.dirs或可能java.library.path。代码的关键部分是:

Properties ps = System.getProperties();
String sep = ps.getProperty("path.separator");
String fileName;
String[] pL = { "java.class.path",
                "java.ext.dirs",
                "java.library.path" };
String[] array;
for (String property:pL) {
    System.out.println(property);
    array = ps.getProperty(property).split(sep);
    for (String path:array) {
        System.out.println(path);
        File[] files = new File(path).listFiles();
        if (files != null) {
            for (File f:files) {
                fileName = f.getName();

1 个答案:

答案 0 :(得分:1)

在Java中查找此类信息是可能的。具体来说,您将获得类路径。使用:

System.getProperty("java.class.path")