Java中包和目录的区别

2024-02-24

In a Java项目,是否保留所有.java同一文件夹中的文件意味着它们位于同一包中?

有什么区别与将所有项目文件保存在一个文件夹中相比,为我们的项目制作一个包?

这个线程 https://stackoverflow.com/questions/9510932/java-package-vs-folder-structure-what-is-the-difference并没有真正解决我的问题。


包和目录之间存在一种关系,但它是you必须维持。如果您有一个位于“mypackage1.mypackage2”中的类,则意味着java命令期望在名为“mypackage1\mypackage2”的目录结构中找到它(假设“向后”Windows 表示法),该目录结构进一步嵌入到一个目录中(我们称之为“myjava”),其名称位于classpath(或者直接在“当前目录”中)。

所以你的Java类(内部说package mypackage1.mypackage2;)位于“\Users\myName\myjava\mypackage1\mypackage2\”中,并且将“\Users\myName\myjava”放在类路径中,否则将当前目录设置为“\Users\myName” \myjava"。

如果你把它搞混了,要么根本找不到这个类,要么你会得到一个错误,比如永远模糊的“NoClassDefFoundError”。

As to why人们会使用包(和目录),原因与“名称空间”和“关注点分离”有关(查找这些内容)。如果没有包并且所有“java.lang”、“java.io”、“sun.misc”等类都在一起,Java 将很难保持正常。首先,必须使用名称“前缀”来保持整齐并避免名称冲突。而且大部分逻辑分组都会丢失。

对于您自己的项目,您不需要为自己编写的简单小程序使用包,但如果您编写的内容可能会交给其他人,那么使用诸如“myname.myproject”之类的包(替换您的名字和当然是项目),因此您将其提供给的人可以将其与其他人结合使用,而不会发生名称冲突。

在大型应用程序中,您会发现使用进一步的分离级别可以帮助您保持功能的直线性,以便您知道所有内容的位置。它还会阻止您“跨越不同功能区域之间的边界”,因此您不会将不相关的逻辑纠缠在一起。

Eclipse(如果您使用它)有点混淆了问题,因为它“想要”提供目录和包名称,并且有时(但并非总是)使它们保持同步。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java中包和目录的区别 的相关文章

  • 如何将TabLayout与Recyclerview同步?

    我有一个TabLayout with Recyclerview这样当单击选项卡时Recyclerview滚动到特定位置 我也想要相反的过程 这样当Recyclerview滚动到特定位置 然后该特定选项卡会突出显示 例如 如果有 4 个选项卡
  • Thread.yield()之后线程的Thread.State是什么?

    是什么Thread State之后的一个线程Thread yield 是不是一个Thread State WAITING 谢谢 不 线程仍会在RUNNABLE http download oracle com docs cd E17409
  • 将命令行参数传递给可运行的 JAR [重复]

    这个问题在这里已经有答案了 我从 Eclipse 项目构建了一个可运行的 JAR 用于处理给定的 XML 文件并提取纯文本 但是 此版本要求将该文件硬编码在代码中 有没有办法做这样的事情 java jar wiki2txt enwiki 2
  • Spring Security“拒绝执行来自...的脚本”

    我正在 HTML 文件 thymeleaf 模板 中使用 Spring Security 和 Bootstrap 构建 Spring MVC 应用程序 Spring Security部分基于Spring Guide对于春季安全 http s
  • 从相对路径读取文件

    我知道这个问题之前已经被问过 1000 次了 我确实尝试了所有解决方案 Java项目中如何从相对路径读取文件 java io File 找不到指定的路径 https stackoverflow com questions 3844307 h
  • 在word文档的标题中添加图片时出现问题

    我正在Word文档的标题中添加图片 它显示图像的框架并显示 当前无法显示图像 如果我将文本添加到标题 它会显示文本 如果我在文档正文中添加图像 它也会显示图像 获取图像也是如此 它在标题上显示文本 但没有图像 我的支票快用完了 有人可以建议
  • Hamcrest 与 MockMvc:检查键是否存在,但值可能为空

    我正在使用 MockMvc 进行一些测试 我想验证 JSON 响应的结构 具体来说 我想确保属性的键存在 并且值是某种类型或为 null keyToNull null This may be null or a String keyToSt
  • 当我在选择 0 索引的情况下删除和添加时,Swing JList 冻结

    这是一个示例 您按下一个按钮 jList1 会重新填充从 a1 到 a1000 的项目 variable private List
  • 将分区扩展到另一级

    根据下图来自春季批量文档 http docs spring io spring batch reference html scalability html partitioning 主步骤被划分为六个从步骤 它们是主步骤的相同副本 我的问题
  • 实现一个java UDF并从pyspark调用它

    我需要创建一个在 pyspark python 中使用的 UDF 它使用 java 对象进行内部计算 如果它是一个简单的 python 我会做类似的事情 def f x return 7 fudf pyspark sql functions
  • Spring MVC - 从 JSP 提交对象

    我有一个显示客户列表的 JSP ArrayList searchResults 我希望能够选择其中之一 并将其 提交给 Spring MVC 控制器 但是 我似乎无法传递所选对象 只能传递它的属性 例如 customerId 我真的需要传递
  • JPA Criteria API 任意数量的联接/子查询

    我需要使用以下实体构建相交类型查询 为了清楚起见 减少了实体 Entity and other stuff public class Member Id private Long id private String name Entity
  • 字符串包含相同的字符但仍然不同[重复]

    这个问题在这里已经有答案了 我正在尝试读取一个 txt 文件并使用每个句子作为团队的名称 同时使用该名称查找另一个 txt 文件以获取其内容 所有 txt 文件都位于我的资产文件夹的根目录中 第一个 txt 文件工作正常 我使用assetm
  • 使用 Java 重新启动 Tomcat

    我需要从 Java 代码重新启动 tomcat 例如 如果某个查询在一段时间内没有执行 那么它将自动重新启动 tomcat 我已经尝试了以下关闭和启动代码 但是当我们关闭tomcat时 java代码将不会运行并且tomcat不会启动 注意
  • 为什么这个 eclipse 错误显示以及它的解决方案应该是什么

    缺少库 xdoclet 1 2 1 jar 选择 XDoclet 的主目录 1 2 1 为什么这个 eclipse 错误显示以及它的解决方案应该是什么alz 这可能是因为该 jar 没有添加到您的项目构建路径中 请按照以下步骤操作 Righ
  • JToolBar 放回 GridBagLayout 时出现 IllegalArgumentException

    为什么这段代码会抛出一个IllegalArgumentException当工具栏被拖离 GUI 然后关闭 将其返回到 GUI 时 我可以理解为什么在没有约束的情况下添加组件可能是不合适的 但在这种情况下 工具栏最初添加到面板 使用GridB
  • GWT 和身份验证

    保护 GWT Tomcat 应用程序执行身份验证和授权的最佳策略是什么 有两种基本策略 确保入口点安全 确保远程服务的安全 确保入口点安全 最简单的方法是使用常规 Web 应用程序安全工具限制对 GWT 生成的 html js 文件的访问
  • 返回数据集的 kSoap 和 .Net Web 服务

    我知道使用数据集是一个很大的罪恶 但由于该服务不在我的控制之下 并且创建代理服务的前景是不可能的 我想看看是否有人创建了可以使用 kSoap 序列化器反序列化的类结构 或者我是否吸错了东西 同时要启动它 看看是否可行 以下是预期的结果数据
  • 缓冲区溢出(与)缓冲区溢出(与)堆栈溢出[重复]

    这个问题在这里已经有答案了 可能的重复 堆栈溢出和缓冲区溢出有什么区别 https stackoverflow com questions 1120575 what is the difference between a stack ove
  • “以下对象被‘package:xxx’屏蔽”是什么意思?

    当我加载包时 我收到一条消息 The following object is masked from package xxx 例如 如果我加载testthat http www rdocumentation org packages tes

随机推荐

  • 捕获蓝牙远程快门事件

    我想知道如何 是否可以在 android 中捕获由蓝牙远程快门事件触发的事件 例如这样的一个 http www avancaproducts com en shop other bluetooth camera shutter remote
  • 在 docker 中运行 json-server

    我一直在跑步json 服务器 https github com typicode json server使用以下配置在 docker 容器中成功运行了一段时间 泊坞窗文件 FROM node alpine EXPOSE 3000 COPY
  • 在自定义 UIGestureRecognizer 中实现速度

    我编写了一个自定义 UIGestureRecognizer 它可以用一根手指处理旋转 它的设计工作方式与 Apple 的 UIRotationGestureRecognizer 完全相同 并返回相同的值 现在 我想实现速度 但我无法弄清楚苹
  • 我应该使用 XSD 1.1 来构建开放标准吗?

    我们被要求为开放 XML 标准整合一组模式 XSD 1 0 可以处理大多数规则 但在某些地方会有点混乱 特别是考虑到可扩展性 它还依赖于实现者以注释的形式阅读某些规则的自由文本描述 几乎所有规则都可以使用 XSD 1 1 来实现 但是我们不
  • Java不发送客户端证书

    我在 Java 1 7 上使用 HttpClient 4 2 3 连接到 nginx 托管的远程服务器 我的组织广泛使用 PKI 并且远程和客户端都具有由通用 CA 颁发的证书 服务器有一个如下的签名链 CN Server 123 OU S
  • .NET 中泛型集合和非泛型集合之间的内存使用差异

    我读到收藏品如今在 NET 中 众所周知 使用有一些优点通用集合 over 非通用的 它们是类型安全的 没有转换 没有装箱 拆箱 这就是通用集合具有性能优势的原因 如果我们认为非泛型集合将每个成员存储为object 那么我们可以认为泛型也具
  • 适用于 OS X 的虚拟 HID 键盘

    我正在尝试创建一个虚拟的蓝牙Mac 操作系统的键盘客户端 这意味着我的 Mac 将充当 BT KB 我读到了 OS X 中的蓝牙 API 在 ObjC 中 并且我还发现了适用于 Mac 的 HID API 在 C 中 为了完成这项工作 我知
  • 如何使用Android Studio获取代码覆盖率?

    我正在使用 Android Studio 开发应用程序 我能够运行测试代码 但是 我不知道如何在 android studio 中获得代码覆盖率 我已经看过以下链接 Android Gradle 代码覆盖率 https stackoverf
  • PHP/MYSQL 父子关系

    我有一个这样的表 id name 父 ID 然后我想根据它们的 id 选择某些行 所以像这样 SELECT FROM TABLE WHERE id IN 1 5 8 9 35 我想从这个查询中也显示父 子关系 例如 id parent 1
  • AWS S3图像保存丢失元数据

    我正在使用用 python 2 7x 编写的 AWS Lambda 函数 该函数下载 保存到 tmp 然后将图像文件上传回存储桶 我的图像元数据从带有 http 标头 例如 Content Type image jpeg 等 的原始存储桶开
  • 如何以编程方式设置 app:srcCompat="@drawable/pic" 的 ImageButton 属性?

    如何设置ImageButton的财产 app srcCompat drawable pic 以编程方式 就像是myImageButton setBackgroundResource R drawable eng2 但财产app srcCom
  • 当我尝试连接到服务器时出现“远程服务器超时”异常

    尝试连接时openfire服务器通过以下代码 Connection connection new XMPPConnection https 192 168 0 101 5222 connection connect 我收到一个异常 上面写着
  • 将 NULL 日期时间值从 T-SQL 返回到 C# DataTable ==> DataRow 而不是空字符串

    该值 row 10 来自 DataRow 对象 来自 T SQL 中的 SQL 结果集 我相信它有一个 对象 类型 在我的数据库中 该特定记录的该字段的值为 NULL 但它在结果集中返回空字符串 而不是空值 我想解决根本问题并让我的结果集返
  • RDCOMClient (Outlook) - ggplot

    我正在使用RDCOMClient用于创建 Outlook 电子邮件的库 我想发送一个ggplot作为电子邮件正文内的图像 内联 not作为附件 我认为这可能的唯一方法是将绘图作为图像添加到HTMLBody财产 我尝试了两种不同的方法来在 h
  • XAML 中的中心弹出窗口

    我使用以下代码创建了一个弹出窗口 但我不知道如何将其居中我尝试在运行时自动更改边距 但我不知道该怎么做 但是有人知道如何使弹出窗口居中吗 它没有标准维度 因为我需要全球化我的程序
  • Android android.view.InflateException 二进制 XML 文件第 16 行:错误膨胀类片段

    这是 MainActivity 类 import java io BufferedReader import java io IOException import java io InputStream import java io Inp
  • Asp.net Web API 2.2 OData4 是否支持 group by 子句?

    Asp net Web API 2 2 OData v4 是否支持聚合和 group by 子句 我找不到任何决定性的答案 另一种方法是使用以下方式实现您的服务QueryByCube提供的linq扩展方法自适应LINQ http www a
  • 如何使用 Boost XML 解析器

    我编写了一个 XML 解析器来读取 XML 文件并将其转换为我的 Position 类的对象 效果很好 请看下面它的代码 XML 文件
  • 当两个错误具有相同的字符串时,errors.Is(err, target error) 返回 false

    这不应该失败 因为两个错误具有相同的字符串 但它仍然失败 if errors Is err testspec expectErr t Errorf Error mismatch want v get v testspec expectErr
  • Java中包和目录的区别

    In a Java项目 是否保留所有 java同一文件夹中的文件意味着它们位于同一包中 有什么区别与将所有项目文件保存在一个文件夹中相比 为我们的项目制作一个包 这个线程 https stackoverflow com questions