也许我误解了 Maven 的依赖原则,但这是我的问题:
我有一个需要这些导入的小 Java 程序
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.StringReader;
import java.io.StringWriter;
现在我不在代码的顶部导入这些,而是直接去 到我的 Maven 项目的 POM 文件中并添加依赖项。 但是在 https://mvnrepository.com/我如何找到正确的进口? 除了在该网站上查看之外,还有其他方法吗?
谢谢。
最佳答案
Now instead of importing these at the top of the code, I would just go into the POM file of my Maven project and add the dependencies.
没有。您将两种不同的东西混为一谈:
要使用库,您需要获得一个物理副本,一个文件,通常是一个.jar
文件。您可以手动下载副本。或者你可以使用 Maven或 Gradle代表您下载副本。 Maven 或 Gradle 方法通常优于手动方法。
下载后,您需要将文件放在项目中可以找到的位置。同样,您可以手动执行此操作,也可以使用 Maven 或 Gradle 使该文件可用于您的项目。同样,与手动方法相比,通常建议使用 Maven 或 Gradle 方法。
在获得并放置库的副本后,您就可以访问它的类和方法了。
? 问题在于,该库的作者可能用在另一个库中找到的相同名称来巧合地命名他们的一些类和方法。
假设您想使用一个名为 Source
的类,但是您的两个库都有这样一个类:
javax.xml.transform.Source
com.example.awesome.Source
如果你在代码中写:
Source s = new Source() ;
...编译器如何知道您指的是这两个类中的哪一个? ?
要解开这个谜团,您可以:
javax.xml.transform.Source s = new javax.xml.transform.Source() ;
import
语句。import javax.xml.transform.Source ;
第二种方法是编写 import
语句,与使用完全限定名称的第一种方法相比,通常可以减少输入并更易于阅读。
import
这个词有点用词不当,是出于遗留历史原因使用的。它在这里的使用不涉及任何地方的任何移动。更好的名字应该是 namespace ,例如,指定已知名称的已定义域。
阅读本文时:
import javax.xml.transform.Source ;
……这样想:
namespace javax.xml.transform.Source ;
… 意思是:“下面任何对“Source”一词的使用都可以假定是指库中的 Source
类,其包为 javax.xml.transform
”
在努力寻找您指定的包的类时,Java Virtual Machine在运行时自动查看您获得和放置的所有库。
https://stackoverflow.com/questions/73145314/