我这几天正在学习Java,我花了很多时间在.NET上,所以当我想导出或导入库时,它们通常是.dll格式,在.Net环境中称为汇编,它们被编译为IL他们可以通过任何方式拥有图像,xml,音频和儿子等资源.
我也想知道Java中的相同过程.我已经阅读了文档,但他们实际上让我感到困惑,并澄清了我需要你帮助的人.
问题:
他们说资源,我们在这里谈论什么样的资源?图像,.txt文件等等或所有这些都可能吗?
我已经检查了AWS(适用于Java的Amazon Web Service API),我看到了三个.jar文件
它们包含.class文件 - html格式的java文档和仍未编译的.java文件.所以我意识到.jar不仅包括编译的字节代码(.class)以及其他内容.
提前感谢您的帮助.
Mik*_*ark 83
.NET程序集与java .jar是一回事吗?
他们扮演同样的角色,是的.
.dll包含已编译的IL代码,而.jar包含已编译的.class/byte代码文件?
是.虽然JAR只是zip文件(你可以在你喜欢的Zip工具中打开它们),所以它们几乎可以包含任何东西.
他们说资源,我们在这里谈论什么样的资源?图像,.txt文件等等或所有这些都可能吗?
JAR中允许任何文件类型.您的Java代码可以通过例如getResourceAsStream或getResource访问jar中文件的内容.显然,JAR中的.class文件是专门处理的(作为字节码).
我检查了AWS(Amazon的Amazon Web Service API),我看到了三个.jar文件,它们是:aws-java-sdk-1.1.1.jar,aws-java-sdk-1.1.1-javadoc.jar, AWS-Java的SDK-1.1.1-sources.jar
上述包装相当普遍.有时人们使用.jar作为.zip的替代文件扩展名.我发现这种做法令人困惑,但这并不罕见,亚马逊在这种情况下已经做到了.我认为这种做法在Maven的推出时变得更加普遍,Maven将参考源代码存储在名为.jar的文件中.
aws-java-sdk-1.1.1.jar - 这是编译和执行所需的唯一文件.它包含库(.class文件)和库运行所需的资源.
aws-java-sdk-1.1.1-sources.jar - 这只是一个包含库的源代码(.java文件)的zip文件.没有必要进行编译或执行.它用于帮助您解决使用库时可能遇到的问题.您可以解压缩此文件并从硬盘驱动器中读取源代码.但是,您的IDE可能通过创建主库JAR的"源附件"直接使用此文件.通过在IDE中设置此库 - >源关联,当您在库类上使用IDE的"转到定义"功能时,IDE将能够向您显示库的源代码.
aws-java-sdk-1.1.1-javadoc.jar - 这只是一个包含库的JavaDoc的zip文件.同样,它不需要编译或执行.JavaDoc只是HTML,因此您可以解压缩此文件并直接从硬盘驱动器中读取JavaDoc HTML.但是,大多数IDE可以创建主库的"javadoc附件",这允许您从IDE中为库提取上下文相关的JavaDoc.实际上,大多数IDE都可以从-sources.jar动态生成JavaDoc,所以我很少再使用javadoc jar了.
当我想导入java库时,我是否总是需要导入.jar文件?
它通常被称为"将JAR添加到类路径",但是是的.您几乎总是需要通过在构建或执行时构建类路径来帮助Java找到您正在使用的所有JAR.通常,使用JAR和类路径比使用.NET中的DLL更加手动和显式.例如:Java没有直接等同于.NET的"全局程序集缓存"; vanilla Java也不会自动从工作目录加载.jars.
还有一些其他技术可用于创建更"自动"的感觉类路径,但它们有点高级:例如Manifest.MF类路径是可能的 - 但这种方法很少使用,因为它很脆弱.从Java 6开始,Java 对类路径中使用通配符的支持有限.
当我想导出自己的java库时,我是否需要导出.jar文件
这是标准的,是的.
回答这个具体问题.
- AWS-Java的SDK-1.1.1.jar
- AWS-Java的SDK-1.1.1-javadoc.jar
- AWS-Java的SDK-1.1.1-sources.jar
1)是编译器java归档文件(jar),在.NET中称为DLL.2)是javadoc.java类(在1中找到)的HTML文档以及方法描述.3)是1)的源代码(java文件).
- 当我想导入java库时,我是否总是需要导入.jar文件?
- 当我想导出自己的java库时,我是否需要导出.jar文件.
对于1)如果您需要使用jar文件中的类,那么您需要将该jar导入到您的项目中.
对于2)你不需要.您可以将依赖关系jar包装到库中或将每个包装到自己的jar中并将它们导入到项目中.