【问题标题】:How to create globally available libraries in Java?如何在 Java 中创建全局可用的库?
【发布时间】:2016-07-02 13:02:27
【问题描述】:

我的意思是,在 Java 中有一组标准的包,可以从计算机上任何上下文中的任何程序引用。因此,当我想处理光栅图像时,我只需将 import java.awt.image.BufferedImage 添加到我的文件顶部,我就可以使用该预构建类,而无需在编译和运行时引用实际的 java.awt.image 包文件。 这些可全局导入的包保存在哪里和/或如何以相同的方式使我的包文件在全球范围内可用?

我最近一直在写很多小帮助程序,其中大部分都做非常相似的事情,而且我可以方便地重用代码而无需显式引用我的包文件。

感谢您的帮助。

【问题讨论】:

  • 为什么不在 Eclipse 中创建一个 lib-project 并将其引用到所有新项目中???
  • @Xoce웃Пepeúpa 因为 1)我不使用 eclipse 我通常只是在文本编辑器中制作 .java 文件,然后使用终端进行编译。 2)我很好奇如何做到这一点。

标签: java installation global packages


【解决方案1】:

您可以将任何您想要的 jar 库放入您的 JRE 中以实现相同的结果 - 此 jar 中的类将在运行时在类路径中可用,但不建议无故这样做:) 但如果您只是在学习和不想打扰构建工具没关系

[java-home]/lib/ext - standart place for your libraries
[java-home]/lib/endorsed - place for the libraries which API's overwrite default JRE's ones

【讨论】:

  • 您能否添加更多关于如何将 jar 添加到我的 JDK 的信息?抱歉,如果这是一个烦人的问题,但我 真的 不是 Java 程序员,而且我不知道我的 JDK 到底在哪里/是什么。是JAVA_HOME引用的目录吗?我只是把我的罐子放在那个目录里吗?
  • 好的,添加了一些信息。是的,在我的示例中,[java-home] 具有您的 JAVA_HOME 环境变量的值
  • 好吧,你是说$JAVA_HOME/lib/ext 用于标准库,$JAVA_HOME/lib/endorsed 用于我自己的库吗?有点像/usr/lib/usr/local/lib?另外,为什么没有充分的理由不推荐这样做?
  • 不,很有可能您可以将库放在 $JAVA_HOME/lib/ext 中。但是,如果它们与标准 JDK 库和类发生冲突,请将您的 jar 放入 $JAVA_HOME/lib/endorsed 目录(99% 您不需要它)。不建议将 jar 放在 JDK 中,因为让程序平台和机器依赖(甚至更改 JDK 行为)不是一个好主意。它应该尽可能自给自足——允许人们从 github 签出应用程序并在标准 JDK 上运行它(例如)。构建工具处理这个问题
  • 啊,我明白了。让我试试这个,如果它有效,我会批准你的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-24
  • 2012-06-26
  • 2012-01-16
  • 2017-11-12
  • 2011-04-29
  • 2012-10-24
  • 2021-12-16
相关资源
最近更新 更多