首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java中的编译时库和运行时库有什么不同?

java中的编译时库和运行时库有什么不同?
EN

Stack Overflow用户
提问于 2010-06-22 11:22:18
回答 4查看 6.3K关注 0票数 10

使用这两种方法的优点和缺点是什么?

我实际上在Netbeans的Project Properties > Libraries for Java Applications下看到了它。我们有两个选项卡,一个用于编译时库和运行时库,看起来我们可以向其中任何一个添加独立的库

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-02-03 01:47:46

库属性对话框的UI和术语非常混乱。

该对话框上的帮助按钮将为您提供大量信息。

编译时库列表可以是运行时库列表的子集。

考虑这种情况..。

你有从'widgets.jar‘库中导入类的源代码。widgets.jar中的类文件引用jar文件'xml.jar‘中的符号。如果您的源代码不从xml.jar导入类,则可以将编译时库列表定义为只包含widgets.jar。

当您尝试运行您的项目时,您可能需要在运行时库列表中包含xml.jar以防止ClassNotFoundException。

票数 8
EN

Stack Overflow用户

发布于 2010-06-22 11:29:19

并不存在编译时库与运行时库的区别

也许你混淆了一些概念。

在Java中,要使用的库是在编译时静态验证的,也是在运行时验证的。

例如,如果您想要使用在Apache Collections库中指定的IterableMap。编译器在“编译时”验证您正在调用的类中存在的方法。

但是编译器不会链接这个库,也不会对它做很多事情,你仍然需要在运行时使用它。因此,当您的代码执行时,Java运行时再次搜索该类,并调用编译器验证存在的方法。

这就是问题所在。

票数 13
EN

Stack Overflow用户

发布于 2012-04-26 11:44:24

也许,当您想要动态加载库,或者检查库的存在,然后执行代码时,这就会起作用。

在编译过程中,编译器需要知道方法、类等的签名,才能知道代码是否正确。因此,您添加了编译时库。

在运行时,JVM仍然需要库来运行特定的代码。但是,您可以通过检查库是否存在来放置一个逻辑来避免该代码,例如,通过执行Class.for()方法。一些库可能已经存在于系统中(例如qt.jar),也可能不存在,您可以相应地检查和执行代码。

如果我错了,请纠正我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3090062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档