将Java导入打包成Jar文件

3
我的问题是,是否有一种方法可以将所有的Java导入放入一个jar文件中,这样当您制作Java程序时,无需逐个导入文件?编辑:我的意思是像这样
import java.awt.*;
import java.awt.event.*;

将代码打包成jar文件,这样每次使用时就不需要再输入import java.awt.*;了。

1
有了“所有Java导入”和“无需单独导入文件”,你实际上是指“所有Java依赖项”和“无需单独将它们添加到类路径中”?否则,这个问题就没有任何意义 :) 无论如何,相关/重复:https://dev59.com/DU_Sa4cB1Zd3GeqP-DL7 - BalusC
java.awt和java.awt.event在rt.jar中...我不明白你的问题。 - OscarRyz
包被高估了,把所有东西放在一起,并用一行代码导入! - bestsss
@bestsss,随着复杂度的增加,软件包变得越来越重要。 - Andy Thomas
@Andy,解释讽刺总是一项不错的技能,但我要跳过它。 - bestsss
3个回答


1

如果你想到的是类似于 C/C++ 的全局包含文件,允许在文件顶部使用单个导入语句,那么不行。

然而,你的 Java IDE 应该能够自动为你添加导入。


1

你正在混淆两个概念 - Java 包和 jar 文件。

一个包不过是一组经常一起使用的类的命名空间。 import java.awt.* 语句并没有将 AWT 类添加到你的程序中,它只是让你可以写 Graphics 而不是 java.awt.Graphics 等等。如果你不想逐个列出这些类(这更加烦人),那么你就无法避免导入它们。

为了在运行时使用一个类,这个类必须对虚拟机可用 - 不管你是否导入了它或者完整地写出了它的名称。像 java.awt.* 这样的标准类通常已经被你的虚拟机所知道了(因为它们是运行环境的一部分)。要使用其他类(包括你自己的类),你需要将它们包含到类路径中(例如通过 -cp 参数传递给 java 命令,或者将它们放在当前目录中),或者你需要通过自己的类加载器来加载它们。在这里,你可以使用 jar 文件 - 类文件可以在类路径中提到的 jar 文件中,也可以在类路径中提到的目录中。 (URLClassloader 的工作方式相同。)

但是,将类打包到JAR文件中并不能避免导入它们以便使用。其中一个问题涉及编译器的名称解析,另一个问题涉及运行时类加载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接