启动应用程序时排除类路径中的类或包

2024-02-18

我有多个*.jar文件夹内的文件,它们全部包含在类路径中,以便在 Microsoft Windows 操作系统中启动指定的主类。目前是这样完成的:

@echo off
java -Xmx1024M -cp libs/*;. org.test.Main

现在我遇到了问题,里面libs文件夹中有两个 JAR 文件,它们都有一个相同的包org.test.configuration。两者是不同的,当我现在启动程序时,我会收到错误,因为 Java VM 选择了错误的程序。

如何在我的启动脚本中排除一个特殊的包或一个特殊的类? (当然我可以从错误的jar中删除这个包,但我不想使用这种方法......)


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被退回。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

启动应用程序时排除类路径中的类或包 的相关文章

  • 使用 Hibernate 用瞬态对象更新持久对象

    每天 数据都是通过网络服务导入的 我创建一个新的 暂时的 实例我通过 JPA 注释在 hibernate 中映射的 pojo 的 我将数据从 Web 服务填充到瞬态实例中 我从数据库加载持久对象 我想用瞬态实例中的数据更新该持久对象 我以某
  • 仅运行相应源代码已更改的单元测试?

    我正在 Jenkins CI 服务器中运行单元测试和 Selenium 测试 众所周知 在大型项目中测试需要很长时间才能运行 Java 是否有一个工具 框架只能触发其源代码已更改的测试 这是因为并非每次对 SCM 的提交都会影响源代码的所有
  • 在 Spark 中写入 JSON 时保留具有空值的键

    我正在尝试使用 Spark 编写 JSON 文件 有一些键有null作为价值 这些在中显示得很好DataSet 但是当我写入文件时 密钥会丢失 我如何确保它们被保留 写入文件的代码 ddp coalesce 20 write mode ov
  • 如何打印JTable中选定的行

    我尝试使用主 JTable 的选定行和相同的头和单元格渲染来创建临时 JTable 但是当我尝试打印它时 我只得到一个带有线边框的空矩形 我在如何打印 JTable 的特定行 列 https stackoverflow com questi
  • 在 JList 中写一些东西

    嘿 我还有另一个问题 我创建JList在我的主窗口中 现在我想向其中添加一些内容 我这样做 private void jButton2ActionPerformed java awt event ActionEvent evt Dodaj
  • 如何在 Java 中复制对象?

    考虑下面的代码 DummyBean dum new DummyBean dum setDummy foo System out println dum getDummy prints foo DummyBean dumtwo dum Sys
  • Java:Swing:设置JButton的位置

    我想实现以下布局 OK
  • Jboss EAP 7 - 如何从部署中排除隐式模块(javax.jms)?

    我没想到我会来到这里 但经过大量 Google 和 StackOverflow 搜索后 我来到了这里 这就是我的确切问题 https www linkedin com pulse tale two jars marco antonio al
  • 如何确定 JDialog 显示在哪个屏幕上

    我有一个非常大的应用程序 有多个对话框 我的任务是确保不完全可见的对话框 因为用户将其从可见屏幕区域拉出 移回屏幕中心 当我只处理一个屏幕时 这没问题 它工作得很好 但是 该应用程序的大多数用户的桌面上都有两个屏幕 当我尝试找出对话框显示在
  • 在 alpine / Jprofile 10 中运行 jpenable 时出现 UnsatisfiedLinkError

    当运行 jpenable 以允许在运行 JDK 8 的 alpine 3 3 容器中对 Jprofiler10 进行分析时 我收到 UnsatisfiedLinkError 异常 有任何想法吗 ERROR The agent could n
  • 如何在 SpringBoot v3.0.0 中使用嵌入式 MongoDB?

    我正在尝试连接嵌入式 mongodb 并使用 MongoDbSpringIntegrationTest 对其进行测试 问题是相同的代码在 2 7 7 中适用于 spring boot 但在 3 0 0 中不适用于 spring boot 问
  • Hibernate更新查询问题

    对于此更新查询 update TestDB dbo MyEmp set empname where empid 我在 DAO 课上写的 MyEmployee myEmployee new MyEmployee MyEmployee myEm
  • 相对重力

    我最近开始使用jMonkey引擎 这非常好 但我在尝试实现相对重力时陷入了困境 我想让行星彼此围绕轨道运行 不一定是完美的圆形轨道 取决于速度 所以每个对象都应该影响其他对象 我现在拥有的 关闭全球重力 bulletAppState get
  • java内存不足然后退出

    我有一个必须分析大文件的软件 限制输入或提供无限内存都不是一个选择 所以我必须忍受飞行的 OOME 因为 OOME 只杀死线程 所以我的软件运行在一些糟糕的状态 从外面看一切都很好 因为进程正在运行 但在内部却是脑死亡 我想拔掉它的插头 但
  • 在 Hibernate 的 XML 配置文件中指定默认值

    我通过映射配置文件配置 Hibernate
  • Java 中有类似 .NET 的 NotImplementedException 的东西吗?

    有没有类似 NET 的东西NotImplementedException在Java中 康芒斯朗 http commons apache org proper commons lang javadocs api 2 6 org apache
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • 原子整数的compareandexchange()与compareandset()

    在研究 AtomicInteger 时 我发现这个 API 提供了两种方法 比较和交换 如果当前值被引用 则自动将该值设置为 newValue to 作为见证值 预期值 记忆效应为 由指定VarHandle compareAndExchan
  • SWT StyledText 有高度限制吗?

    我正在尝试创建一个应用程序 其中包含在 ScrolledComposite 中显示的 StyledText 框 我在 StyledText 框中显示大量行时遇到困难 超过 2 550 行似乎会导致问题 StyledText 框本身不能有滚动
  • 与手动搜索列表相比,Collections.binarySearch 的性能如何?

    我想知道该使用哪一个 我有一份学生名单 我想用他的名字搜索一个学生 到目前为止 我是通过迭代列表手动完成的 如下所示 for int i 0 i lt list size i Student student list get i if st

随机推荐