繁体   English   中英

如何在 Eclipse 中同时构建我的自定义 java 包和项目?

[英]How do I do in Eclipse to build my custom java package and project at the same time?

据说一个 java 包可能包含类、接口、枚举,......但我一直在网上寻找,但我仍然没有找到我要找的东西......当我看到包信息文件时,他们也包含类...我的想法是包在同一个文件中定义类、接口等,但类的代码应该在一个单独的类文件中,不是吗?

我是否应该在为 Eclipse 创建的每个类中命名相同的包,以便将它们放在同一个包下而不需要包信息文件? 另一方面,Eclipse 真的有必要为每个包创建一个 treedir 吗? 我可以在类所在的包文件中定义吗? 包信息文件的内容是什么?

也有人说当你要使用一个包时,它应该是 .jar 格式......是真的吗?

我想要做的是构建一个通用的自定义包以在多个项目中使用它,但我想将它链接而不是复制到每个项目,所以我只修改一次代码......这在 Eclipse 中可能吗?

想法 1:+ 包含类的所有定义和位置的包文件 + 一堆按主题分布在不同文件夹中的类 + eclipse 将使用链接的包文件在包含包中引用的类的文件夹树中创建一个包。

想法 2: + 没有包文件 + 每个类将通过包含包名称来说明哪个包在其中 + eclipse 将与引用相同包的一组链接类一起工作,这就是它在项目树中创建的内容。


更新 20180904:

  • 我想将所有类存储在一个单独的文件夹中,例如“.../classes/*.java”

  • 我计划在 Eclipse 环境允许的情况下其中一些类链接到一个包下,比如“.../src/com.dataproc/class1.java ...”

  • 我想编译包并为我正在开发的项目和特殊目录中的其他项目做好准备,比如“.../mylib/common/*.jar

  • 当我说“同时”时,是因为我想在相同的环境中工作,为我的包和我的项目创建类。

正如您可能认为的那样,我仍然是 Java 和 Eclipse 的新手,但是,嘿,渴望学习! 我不得不说我查看了提到的有关包的 Oracle 信息,但我仍然不清楚如何继续。 这对我来说太基础了,所以我不明白我是否必须在每个类 java 文件中声明包或在某个 package-info.java 文件中声明我想要的所有类,我所知道的是我必须使用“在我的项目中导入 mypackagename.*"...

任何帮助或方向都非常感谢。


更新 20180926:这个问题已经从这个相关问题得到解决

首先我尝试澄清java packagepackage-info.java文件和JAR文件的含义。

Java 包的概念独立于您用于开发的 IDE。 来自Oracle 文档 - 创建和使用包Java 包是一组提供访问保护和名称空间管理的相关类型。 请注意,类型是指类、接口、枚举和注释类型。

要点是:同一个包中的类可以访问彼此的包私有成员和受保护成员 当您必须在包中组织源代码时,这是您必须考虑的关键因素。


package-info.java文件的主要目的是为应用于包的注释创建一个空间,除了为包级 javadoc 提供一个家。 [ Joseph D. Darcy 的 Oracle 博客]


JAR代表Java 归档 它是一种基于流行的 ZIP 文件格式的文件格式,用于将多个文件聚合为一个。

因此JAR文件格式是用于将许多 Java 类文件和关联的元数据和资源(文本、图像等)聚合到一个文件中进行分发的主要标准。


我想要做的是构建一个通用的自定义包以在多个项目中使用它,但我想将它链接而不是复制到每个项目,所以我只修改一次代码......这在 Eclipse 中可能吗?

如果你想正确地做到这一点,你必须按如下方式构建你的项目:

  • 在一个特定的项目中组织可重用的组件,从现在开始称为A。 A可以根据需要包含任意数量的包。 一个需要被构建和部署,以提供给其他客户。 有一些工具可用于帮助您满足这些要求(最常用的 Java自动化构建工具MavenGradle )。
  • 项目编译源代码是一个JAR文件格式提供。
  • 其他项目可以重用A提供的功能,假设B是一个依赖于A的项目:为了重用A的组件,项目A jar 文件必须在B的类路径中可用。
  • 在您的项目开发过程中,您的 IDE 可以轻松满足这些要求,但是当您必须分发最终产品时,前面提到的工具是最佳解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM