我的问题是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();