【问题标题】:discover path for symbol发现符号的路径
【发布时间】:2014-08-15 21:40:55
【问题描述】:

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

推动这一点的是我桌面上的标准Hello.java 示例,它打印“Hello, world!”编译运行后,当代码本身是“Hello world!” (无逗号)。比如高中英语什么的。删除我认为正在运行的Hello.class 文件没有任何改变。与Hello.java 同上。更奇怪的是,当它存在时,编译器首先在其搜索路径中在我的桌面上找到源文件Hello.javaHello.class is 在我运行 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();

【问题讨论】:

    标签: java symbols


    【解决方案1】:

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

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

    【讨论】:

    • 这将打印“.”,即包含 Hello.java 的目录。不幸的是,这并不能回答我的问题。
    • @telliott99 不幸的是,有一个 catch-22,因为您需要找到打印“Hello, world!”的代码。用逗号通过编辑找到类路径。
    猜你喜欢
    • 2018-05-06
    • 2012-04-18
    • 1970-01-01
    • 2015-06-10
    • 2019-12-18
    • 2014-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多