6

找到包含核心 Java 类的 jar 的最佳方法是java.lang.Object什么?我一直在使用JAVA_HOME,但事实证明只有安装了 JDK 才有效。java如果从命令行运行,我如何才能找到将使用的标准库位置?

另外,我需要从 Python 脚本中执行此操作,因此请不要使用 Java 库进行响应。

4

4 回答 4

2

当您java从 Oracle 的 JVM 启动时,它会将sun.boot.class.path属性设置为指向rt.jar,它通常包含所有java.lang内容。

您可以做的是启动一个简单的 Java 程序,该程序检索System.getProperty("sun.boot.class.path")并获取该文件应该在的位置。在此处阅读更多信息。

如果您的环境是正确的(JAVA_HOME设置等),上面应该可以工作。否则,恐怕你有鸡和蛋的问题;-)

于 2012-11-24T23:00:10.197 回答
1

Since there are no explicit restrictions on placing internal classes, then you should try handle all the possible (or as much as possible) places.

First of all, you should definitely look for java in PATH. Unfortunately, it will fail sometimes, for instance, you can often find java.exe in C:\Windows\System32. Fortunately, in case of Windows you can use registry to get a list of installed JREs.

If you have found some jars which might contain basic classes, you can use zip or jar to check that java/lang/Object.class is there.

于 2012-12-21T22:58:40.307 回答
0

Python 应该有办法找到“java”或“java.exe”可执行文件的位置。按照所有符号链接显示真实位置。我的 Python 生锈了,但我认为shutil.which并将os.path.realpath完成这项工作。

核心类将../lib/rt.jar与 java 可执行文件相关。

于 2012-11-24T23:12:18.690 回答
0

如果您使用的是 linux,则可以使用 shell 命令:“type java”并解析输出。

于 2012-11-24T22:08:08.277 回答