【发布时间】:2014-08-15 21:40:55
【问题描述】:
我的问题是,Java 在 Python 中是否没有类似 sys.path 的东西,或者更具体的方法来找出符号的来源。我从一些外部来源看到了“加载此工具”的答案,但似乎该语言可以具有这种能力。
推动这一点的是我桌面上的标准Hello.java 示例,它打印“Hello, world!”编译运行后,当代码本身是“Hello world!” (无逗号)。比如高中英语什么的。删除我认为正在运行的Hello.class 文件没有任何改变。与Hello.java 同上。更奇怪的是,当它存在时,编译器首先在其搜索路径中在我的桌面上找到源文件Hello.java。 Hello.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();
【问题讨论】: