Java 按顺序在类路径中搜索包/类。而不是使用通配符...
java -Xmx1024M -cp libs/*;. org.test.Main
...按照所需的顺序写出类路径,其中包含“正确”的 jarorg.test.configuration
先打包。
java -Xmx1024M -cp libs/test-config.jar;libs/other.jar;libs/etc.jar;. org.test.Main
Edit
您也许仍然可以使用通配符,只需首先显式列出所需的 jar,然后让它在类路径中重复:
java -Xmx1024M -cp libs/test-config.jar;libs/*;. org.test.Main
这里有一个最小、完整、可验证的示例 https://stackoverflow.com/help/mcve:
org\test\Main.java(在 main.jar 中):
package org.test;
import org.test.configuration.Config;
public class Main {
public static void main(String[] args) {
Config cfg = Config.getConfig();
System.out.println(cfg);
}
}
org\test\configuration\Config.java (在 config1.jar 中):
package org.test.configuration;
public class Config {
public static Config getConfig() {
return new Config();
}
}
org\test\configuration\Config.java(在 config2.jar 中):
package org.test.configuration;
public class Config {
public static Config getConfig() {
return null;
}
}
java -cp 库\*;。 org.test.Main
org.test.configuration.Config@1540e19d
java -cp libs\config2.jar;libs\*;. org.test.Main
null
仅使用libs\*
在类路径中导致 config1.jar 首先被包含,并且实时Config
对象被返回。使用libs\config2.jar;libs\*
导致Config
首先包含 config2.jar,并且null
被退回。