找到包含核心Java类(例如java.lang.Object
)的jar的最佳方法是什么?我一直在使用JAVA_HOME
,但事实证明,只有安装了JDK才能使用它。如果从命令行运行java
,我怎样才能找到将使用的标准库位置?
另外,我需要从Python脚本执行此操作,因此请不要使用Java库进行响应。
答案 0 :(得分:2)
当您从Oracle的JVM启动java
时,它会将sun.boot.class.path
属性设置为指向rt.jar
,该java.lang
通常包含所有System.getProperty("sun.boot.class.path")
内容。
你可以做的是启动一个简单的Java程序,它检索JAVA_HOME
并获取该文件的位置。详细了解here。
如果您的环境正确({{1}}已设置等),则上述应该有效。否则,我担心你有鸡和蛋的问题; - )
答案 1 :(得分:1)
由于放置内部类没有明确的限制,所以你应该尝试处理所有可能的(或尽可能多的)地方。
首先,你一定要在PATH中寻找java
。不幸的是,它有时会失败,例如,您经常可以在java.exe
中找到C:\Windows\System32
。幸运的是,在Windows的情况下,您可以使用注册表来获取已安装的JRE列表。
如果您找到了一些可能包含基本课程的jar,您可以使用zip
或jar
来检查java/lang/Object.class
是否存在。
答案 2 :(得分:0)
如果您使用的是linux,则可以使用shell命令:“type java”并解析输出。
答案 3 :(得分:0)
Python应该有办法找到“java”或“java.exe”可执行文件的位置。按照所有符号链接显示真实位置。我的Python很生疏,但我认为shutil.which
和os.path.realpath
可以完成这项工作。
核心类将相对于java可执行文件位于../lib/rt.jar
。