【发布时间】:2014-04-01 10:22:09
【问题描述】:
我来自 C/C++ 背景,并且在 Java 中有工作经验。我现在正在转向 Java 语言(因为我觉得我早就应该这样做了)。在 C/C++ 中,如果应用程序已经链接到外部共享库(.so、.a、.sl),我们可以使用 'ld' 命令了解这种依赖关系。
我的问题是,.jar 服务器是否有类似的用途?就像 java 应用程序依赖于 1.jar、2.jar 等一样,这些 jar 文件是否会永远“链接”到 Java 应用程序(导致更大的文件,比如 .a 被 c/c++ 应用程序喜欢,从而导致更大的可执行文件)或动态地(就像 .so / .sl 一样被即时加载,而不是主 c/c++ 应用程序的一部分)。
另外,是否可以列出一个 java 应用程序所依赖的所有 jar 文件?
在 java 中,默认情况下应用程序会导入 java.lang.* 包,这个包是否驻留在 jar 文件中?如果有,该包对应哪些jar文件?
非常感谢!
维平
【问题讨论】:
-
第一个问题可以通过简单的实验来回答。问题二,不,这就是像 Maven 这样的东西存在的原因。问题三,检查你的 JDK 或 JRE 安装目录。查找 jar 文件。 grep 通过他们列出的内容。问题已回答!
-
如果您认为 [1] 您可能有不同的类加载器,并且 [2] 您可能有来自不同 jar 的重复类,并且 [3] 您可以指定一个类作为在执行时使用 forName() 动态调用