java中的外部jar依赖性,编译时与运行时

java中的外部jar依赖性,编译时与运行时,java,Java,假设您有一个使用外部用户定义类的简单Hello world java程序。你什么时候需要这个罐子? 在编译时还是在运行时 在最近的一次采访中,有人问我这个问题,我回答了这两个问题 后来我认为,要进行编译,我们只需要类定义(即方法名、变量名)等。但是,我们可以在没有.jar的情况下使用它吗?在编译过程中,您需要类的源文件(并一起编译所有内容)或构建路径中的.class文件(编译文件)。只要您的外部.class文件没有其他依赖项,就可以在没有.jar文件的情况下实现这一点。 jar文件可用于编译时

假设您有一个使用外部用户定义类的简单Hello world java程序。你什么时候需要这个罐子? 在编译时还是在运行时

在最近的一次采访中,有人问我这个问题,我回答了这两个问题


后来我认为,要进行编译,我们只需要类定义(即方法名、变量名)等。但是,我们可以在没有.jar的情况下使用它吗?

在编译过程中,您需要类的源文件(并一起编译所有内容)或构建路径中的.class文件(编译文件)。只要您的外部.class文件没有其他依赖项,就可以在没有.jar文件的情况下实现这一点。
jar文件可用于编译时、运行时或两者。这取决于你有什么样的依赖关系。例如,您在编译期间需要它,而在运行时不需要它,因为您在一个已经有jar(或其版本)的托管环境(如应用程序服务器)中运行应用程序。例如,如果您的代码执行某些动态类加载(例如
java.sql.DriverManager
在加载sql驱动程序类时执行此操作),则在运行时直接需要它。

当然,最常见的情况是编译时和运行时都需要jar。

在运行时,您总是需要jar

在编译时,在开发环境(例如eclipse)中,不一定需要jar文件。还有其他机制(Build bath settings)可用于查找该类。 如果项目是使用构建脚本(如ant)编译的,则需要使用外部jar