用Java创建包
这里有人能帮我拿包裹吗。我已经了解了软件包的工作原理 如何导入它们以及如何使用package关键字创建它们。目录和目录是如何工作的。什么是类路径以及如何设置它 但是有一件事我无法得到,那就是如果我想创建一个包并在类路径中添加基目录的位置,那么基目录中应该有什么 它是.java文件还是.class文件,或者两者都是,或者叫做.jar文件的东西用Java创建包,java,package,Java,Package,这里有人能帮我拿包裹吗。我已经了解了软件包的工作原理 如何导入它们以及如何使用package关键字创建它们。目录和目录是如何工作的。什么是类路径以及如何设置它 但是有一件事我无法得到,那就是如果我想创建一个包并在类路径中添加基目录的位置,那么基目录中应该有什么 它是.java文件还是.class文件,或者两者都是,或者叫做.jar文件的东西 我也不知道jar格式是什么。包是类名的唯一名称空间。它可以防止程序之间和库之间的冲突 例如,如果您创建了一个名为电子表格的类,其他几个人也创建了一个名为电子
我也不知道jar格式是什么。包是类名的唯一名称空间。它可以防止程序之间和库之间的冲突 例如,如果您创建了一个名为
电子表格
的类,其他几个人也创建了一个名为电子表格
的类,并且由于某些原因,所有这些类在运行时都可用,则只能加载一个。(事实上比这更复杂,但我的陈述对大多数常见情况都是正确的。)
但是,如果您的类名为com.kataria.Spreadsheet
,则不太可能与任何其他类发生冲突,因为它们不太可能具有该包名称
包名称是类名的一部分。Java没有名为List
的类,但Java有名为Java.util.List
的类。import
语句只是编译器的简写<代码>导入java.util.List告诉编译器,“每次我写List
,实际上是指java.util.List
”
由于类名的最后一部分(称为简单名称)只是一个简写,因此两个类java.util.List
和java.awt.List
是不同的类。他们之间没有冲突。(但是,如果出于某种原因,您想同时导入这两个文件,这将是一个问题,因为编译器不知道代码中的List
本身是java.util.List还是java.awt.List的缩写。)
为了实现一致性,Java要求每个(公共的、顶级的)类都位于一个与其名称和包完全匹配的文件中:
- 必须在名为java/util/List.java的文件中定义java.util.List
- 必须在名为com/kataria/Spreadsheet.java的文件中定义com.kataria.Spreadsheet
- 必须在名为com/example/ai/wopr/Brain.java的文件中定义com.example.ai.wopr.Brain
- 等等
- 必须将java.util.List类编译为名为java/util/List.class的文件
- 必须将com.kataria.Spreadsheet类编译为名为com/kataria/Spreadsheet.class的文件
- com.example.ai.wopr.Brain类必须编译成一个名为com/example/ai/wopr/Brain.class的文件
- 等等
javacom.kataria.Spreadsheet
,它将在类路径中指定的每个目录中查找com/kataria/Spreadsheet.class文件
不久之后,Java类路径条目被允许是.zip文件或.jar文件。尽管它们是单个归档文件,而不是目录,但此类归档中的条目必须遵守相同的规则:回到上一个示例,类路径中具有com/kataria/Spreadsheet.class条目的第一个.jar文件将是运行时加载类的源
jar文件实际上是一个zip文件,包含不同的扩展名和一些特定于Java的特殊条目。与复制一堆文件相比,这是交付Java程序或库的简单方法。(而且它是压缩的,因此占用的空间更少,可以更快地从磁盘加载。)
要运行Java程序时,通常在命令行上设置类路径:
java -cp /home/kataria/my-spreadsheet.jar:/opt/javafx/lib/javafx.base.jar com.kataria.Spreadsheet
您还可以设置名为
CLASSPATH
的环境变量;这是基于这样一个事实,即原始系统搜索路径已使用(并将继续使用)“PATH”和“LD_LIBRARY_PATH”等环境变量。我不建议设置类路径,因为它将导致您的程序只在一个特定环境中运行。该程序不会在任何其他计算机上运行,除非该用户还记得设置其CLASSPATH变量。如果您还是java新手,为什么不使用ide(例如:eclipse)?它将为您处理所有枯燥的编译问题。我想说,从ide开始会更容易。但是你可以把包想象成一个文件夹,里面有类stored@DavidAlmeida我正在使用VSCode,我尝试在基本文件夹中创建不同的文件夹,并尝试将类从一个文件夹导入另一个文件夹。但是为了做到这一点,我刚刚使用了其他目录中的.java文件,它工作得非常好。现在我在想,如果我想做一个包裹,我需要做什么。顺便说一句,谢谢你的回复。或者,与其让IDE帮你做这件事,不如看看Java教程?关于文件结构/导入的内容很多。如果我看起来没有尝试进行研究并投入精力,请向大家道歉,但我已经被软件包困了至少4天了,现在这让我很难受。我了解得最多,但这是我最后一件没有得到的东西。我只想完成这个主题,然后继续讨论接口、异常、I-o流和多线程。我的意思是,我有很多工作要做,但剩下的时间非常少