Exclude class or package inside classpath when starting an application(启动应用程序时排除类路径中的类或包)
问题描述
我在一个文件夹中有多个*.jar
文件,它们都包含在类路径中,以便在Microsoft Windows OS中启动指定的主类。目前这是这样完成的:
@echo off
java -Xmx1024M -cp libs/*;. org.test.Main
现在我遇到了问题,在libs
文件夹中有两个JAR文件,它们都有一个相同的包org.test.configuration
。两者是不同的,当我现在启动程序时,我收到错误,因为Java VM选择了错误的程序。
如何在我的启动脚本中排除一个特殊包或一个特殊类?(当然,我可以从错误的JAR中删除此包,但我不想使用此方法...)
推荐答案
按顺序在类路径中搜索包/类。不使用通配符...
java -Xmx1024M -cp libs/*;. org.test.Main
.按照所需的顺序写出类路径,首先是包含"正确的"org.test.configuration
包的JAR。
java -Xmx1024M -cp libs/test-config.jar;libs/other.jar;libs/etc.jar;. org.test.Main
编辑
您可能仍然可以使用通配符,只需首先显式列出所需的JAR,并让它在类路径中复制:
java -Xmx1024M -cp libs/test-config.jar;libs/*;. org.test.Main
这里是Minimal, Complete, Verifiable Example:
org estMain.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 estfigationConfig.java(在config1.jar中):
package org.test.configuration;
public class Config {
public static Config getConfig() {
return new Config();
}
}
org estfigationConfig.java(在config2.jar中):
package org.test.configuration;
public class Config {
public static Config getConfig() {
return null;
}
}
Java-cp libs*;Org.est.Main
Java-cp libsfig2.jar;libs*;。Org.est.Main
邮箱:org.est.configuration@1540e19d
空
在类路径中仅使用libs*
会导致首先包含config1.jar,并返回一个活动的Config
对象。使用libsconfig2.jar;libs*
会导致首先包含来自config2.jar的Config
,并返回null
。
这篇关于启动应用程序时排除类路径中的类或包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:启动应用程序时排除类路径中的类或包
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 转换 ldap 日期 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 获取数字的最后一位 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01