我的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)其他东西?
答案 0 :(得分:14)
如果您正在寻找有关在Java程序上应用各种软件许可证的信息,那么在Google上搜索<license name> Java
通常会产生有用的效果。
例如LGPL Java
,this是第一次点击。在这种特殊情况下,底线是:
链接到LGPL的应用程序 图书馆不需要发布 LGPL。仅需申请 遵循第6节的要求 LGPL:允许新版本的 要与之链接的库 应用;并允许反向 工程来调试这个。
即。只要库是在一个可以轻松替换的单独JAR文件中提供的,LGPL允许它。
PS:我不是律师!如有疑问,请咨询一个。事实上,根据你居住的地方,无论你是否有疑问,都可以咨询一下。答案 1 :(得分:9)
Java中不存在静态与动态,如C ++中所示。所有类在引用时都会加载到JVM中,因此您需要认为Java中的所有导入(包括反射)都是动态的。
是的,那个。*很糟糕,因为它引用了该包中的所有类。
答案 2 :(得分:4)
好吧,您不会将库中的代码编译到您的java类中。您编译的类按名称引用其他库中的类。需要时,类由类加载器加载。它更类似于动态链接。
从许可的角度来看 - 例如LGPL许可证,应视为动态链接。在那种情况下,我从未听说过任何法律程序(虽然我已经搜索过了),但它很有道理,我很期待它,因为很多开发人员对它有点担心。