在Java中,哪个路径是第一优先级



如果.m2文件夹和java类路径中都存在相同版本或不同版本的jars,那么java首先尝试在哪个路径中查找jar?哪个路径将是最高优先级?。

Java,就像在VM中一样(java.exe(将搜索类路径。这就是结局。m2是一个特立独行的东西。它可能很受欢迎,但它不是内置的,也不是虚拟机所认为的存在。

m2目录结构是这样的,事实上它不能在类路径本身上。

其想法是,maven和其他工具将解析依赖项,然后创建一个类路径,该类路径包含正确的所需依赖项(通过创建一个路径指向.m2目录的字符串(,然后使用该创建的字符串作为类路径进行编译,或者,如果使用mvn test或其他工具,则使用该类路径运行VM(java.exe(。在这些情况下,.m2目录中的内容位于类路径上。如果您只是自己运行java(java -jar yourapp.jarjava -cp your:dirs com.foo.MainApp或双击一个jar(,那么.m2根本不涉及。

你总是可以写一个应用程序来检查:

System.out.println(SomeClass.class.getResource("SomeClass.class"));

是将打印字符串的代码,该字符串告诉从何处加载该类。适用于(几乎(任何东西,甚至字符串:

System.out.println(String.class.getResource("String.class"));

因此,如果你不确定,这是一个很容易发现的问题。为你想知道它来自哪里的类型编写一个hello world应用程序。

最新更新