从包名中获取.java

从包名中获取.java,java,parsing,classpath,qdox,Java,Parsing,Classpath,Qdox,我正在使用解析java源代码。我对此界面有问题: import test.Word; public interface Spellable { /** * Checks the spell of the word in a given language */ public boolean checkSpell (Word word); } 在解析单词类型时,我需要知道文件系统中的路径在哪里。 那么,有没有办法知道这一点?也许是使用类路径?我认为不可能以一种

我正在使用解析java源代码。我对此界面有问题:

import test.Word;

public interface Spellable {
    /**
    * Checks the spell of the word in a given language
    */
    public boolean checkSpell (Word word);  
}
在解析单词类型时,我需要知道文件系统中的路径在哪里。
那么,有没有办法知道这一点?也许是使用类路径?

我认为不可能以一种很好的、100%绝对兼容的方式来实现这一点。Java实际上试图通过类路径机制将您从文件系统中抽象出来

然而,您通常可以通过类加载器获取文件路径。第一步是获取对类加载器的引用,该类加载器可以找到您感兴趣的任何资源(通常,您自己的任何类的类加载器都可以正常工作;如果您有更复杂的场景,您应该有希望知道使用哪个类加载器)

然后,您可以向类加载器询问给定资源作为URL的位置,例如:

final ClassLoader loader = getClass().getClassLoader();
final URL resourceLocation = loader.getResource("com/mycomp/coolapp/checkthis.doc");
如果幸运的话,URL将使用
文件:/
协议,并将描述本地文件系统上的位置。如果是这样,您可以提取该路径,并将其用作刚刚查找的任何类路径资源的文件系统位置。如果该类不是
文件:/
资源,则该类甚至可能不存在于您的本地计算机上(例如,它通过RMI远程加载),因此无论如何您都会运气不佳


如果这听起来很复杂-也许您可以从Java启动脚本(例如,
Java…-Dworking.dir=$(pwd)
)中将工作目录作为系统属性传入。

您想要当前目录还是类的包?文件系统的位置取决于它是否在jar文件中以及类路径指向的位置。我不知道如何使用类路径来获取它。您编写的第二行是retuning null,我如何才能向类路径添加内容?在这种情况下,我是否必须向其添加测试文件夹?@Federico,您需要将测试文件夹的父文件夹添加到类路径。