代码之家  ›  专栏  ›  技术社区  ›  telliott99

发现符号的路径

  •  0
  • telliott99  · 技术社区  · 10 年前

    我的问题是Java是否没有 sys.path 在Python中,或者甚至更具体的方法来查找符号的来源。我看到过一些来自外部的回答说“加载这个工具”,但似乎这种语言可以有这种能力。

    这是一个标准 Hello.java 在我的桌面上,当代码本身是“Hello world!”(没有逗号)时,在编译和运行后打印“你好,世界!”的示例。比如高中英语之类的。删除 Hello.class 我以为正在运行的文件没有改变。同上 程序过程 那里更奇怪的是,当它出现时,编译器会找到源文件 程序过程 在我的桌面上搜索路径的第一个。 Hello类 运行时更新 javac Hello.java 。那么我如何找到我的神秘档案?发布和使用 grep ?

    更新:

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

    > 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 回复  |  直到 10 年前
        1
  •  1
  •   nanofarad    10 年前

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

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