我的问题是Java是否在Python中没有像sys.path
这样的东西,或者更具体的方法来找出符号的来源。我已经看到答案说“加载此工具"从一些外部来源,但似乎语言可以具备这种能力。
这方面的推动力是我桌面上的一个标准Hello.java
示例打印" Hello,world!"在编译和运行之后,代码本身就是" Hello world!" (没有逗号)。喜欢高中英语或其他什么。删除我认为正在运行的Hello.class
文件没有任何改变。那里有Hello.java
同上。甚至更奇怪,当它存在时,编译器首先在其搜索路径中找到我的桌面上的源文件Hello.java
。运行Hello.class
时,javac Hello.java
已更新。那我怎么找到我的神秘文件? Relent并使用grep
?
更新
所以,我应该猜到麻烦的文件是/Library/Java/Extensions
中的(这是OS X),或者我的用户特定目录(前置~
)。找到候选人之后,我用
> 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();
答案 0 :(得分:1)
在Java中查找此类信息是可能的。具体来说,您将获得类路径。使用:
System.getProperty("java.class.path")