【问题标题】:How do I do in Eclipse to build my custom java package and project at the same time?如何在 Eclipse 中同时构建我的自定义 java 包和项目?
【发布时间】:2019-02-07 18:40:21
【问题描述】:

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

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

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

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

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

想法 2: + 没有包文件 + 每个类都会通过包含包名来说明哪个包在其中 + eclipse 将使用一组链接的类,这些类引用同一个包,所以这就是它在项目树中创建的内容。


更新20180904:

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

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

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

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

如您所想,我仍然是 java 和 Eclipse 的菜鸟,但是,嘿,渴望学习!我不得不说我查看了提到的Oracle info about packages,但我仍然不清楚如何进行。这对我来说太基础了,所以我不明白是否必须在每个类 java 文件中声明包或在某个 package-info.java 文件中声明我想要的所有类,我所知道的是我必须使用“在我的项目中导入 mypackagename.*"...

非常感谢任何帮助或指导。


20180926更新:这个问题已经解决from this related question

【问题讨论】:

  • 一个包可以包含类、接口等和一个或没有package-info.java文件。一个包对应一个文件夹(例如,包com.example.foo 是文件夹com/example/foo)。 package-info.java 文件不能包含类、接口等,但可以包含 Javadoc,也可以用来给包添加注解。源文件(*.java)被编译为字节码(*.class 文件)。通常将这些已编译的 *.class 文件作为单个 JAR 文件而不是作为包含 *.class 文件的目录发送。

标签: java eclipse class package project


【解决方案1】:

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

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

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


package-info.java 文件的主要目的是为应用到包的注释创建一个空间,此外还为包级 javadoc 提供了一个主页。 [Joseph D. Darcy's Oracle Weblog]


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

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


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

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

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

【讨论】:

  • 这让我重新提出了这个问题,因为我注意到它有点混乱......我不想做的是使用不同的 IDE 来编译这两个东西(项目和自定义公共包)也没有两步编译(JARs和将使用JARs的项目)。
  • 项目 A 需要编译具有可重用组件的其他项目才能使用。无法避免该阶段,但是您的 IDE 可以为您完成。在 Eclipse 中,您可以创建一个项目 B,然后在 Project -> Properties -> Java Build Path -> Projects -> Add 下,您可以将依赖项添加到项目 A。如果您一直标记Project -> Build automatically,这应该可以满足您在单个工作区中工作的要求,并且您在 A 中的更改会立即在 B 中可用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 2013-05-01
相关资源
最近更新 更多