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

说我的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)其他什么?

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

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

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

即只要库是在一个可以轻松替换的单独JAR文件中提供的,LGPL允许它。

PS:我不是律师! 如有疑问,请咨询一个。 事实上,根据您居住的地方,无论您是否有疑问,都可以咨询一下。

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

是的,那个。*很糟糕,因为它引用了该包中的所有类。

好吧,你不会将库中的代码编译到你的java类中。 您编译的类按名称引用其他库中的类。 需要时,类由类加载器加载。 它更类似于动态链接。

从许可的角度来看–fg LGPL许可证,应该被视为动态链接。 在那种情况下,我从未听说过任何法律程序(尽管我已经搜索过它),但它很有道理,我很期待它,因为许多开发人员对它有点担心。