java中编译时库和运行时库的区别是什么?

jon*_*ita 9 java netbeans

什么是专业人士使用的?

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

Osc*_*Ryz 11

没有编译时库运行时库这样的东西

也许你正在混合一些概念.

在Java中,要使用的库在编译时进行静态验证,并在运行时进行验证.

例如,如果要IterableMapApache Collections库中指定使用 .编译器验证"在编译时"您正在调用该类中存在的方法.

但是编译器没有与该库链接或执行任何操作,您仍然需要在运行时使用它.因此,当您的代码执行时,Java运行时再次搜索该类,并调用编译器验证存在的方法.

那是什么.

  • @bdhar - 反射只是一种不同的处理方式,可以将验证推迟到类加载之后.编译器对以这种方式调用的方法的类型一无所知,但运行时系统(特别是反射API)确保不会发生任何不安全的事情. (3认同)

vkr*_*mer 8

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

该对话框上的"帮助"按钮将为您提供相当多的信息.

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

考虑这种情况......

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

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