从 jar 导入 java 库类时,这是否被视为静态链接?还是动态的?

2022-09-01 14:24:26

假设我的lib文件夹中有jcifs-1.3.14.jar,并且我有一个从库中导入的类,并使用如下类:

import jcifs.smb.*;
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(domain, 
                                                                 user, 
                                                                 pass);
SmbFile file = new SmbFile(path, auth);
// do some operations with the file here

当以这种方式使用库时,它是否被认为是:A)静态链接或B)动态链接或C)其他东西?


答案 1

如果您正在寻找有关在Java程序上应用各种软件许可证的信息,那么搜索Google通常会产生有用的结果。<license name> Java

例如,这是第一次命中。在这种特殊情况下,底线是:LGPL Java

链接到LGPL库的应用程序不需要在LGPL下发布。应用程序只需要遵循LGPL第6节中的要求:允许将新版本的库与应用程序链接;并允许逆向工程对此进行调试。

也就是说,只要库在一个单独的JAR文件中提供,可以很容易地替换,LGPL就允许它。

PS:我不是律师!如有疑问,请咨询。事实上,根据你住的地方,无论你是否有疑问,咨询一个人可能是有意义的。


答案 2

静态与动态,如C++在Java中不存在。所有类在被引用时都会加载到 JVM 中,因此您需要认为 Java 中的所有导入(包括反射)都是动态的。

而且.*很糟糕,因为它可能会引起命名和类发现冲突,与类引用无关。


推荐