gpt4 book ai didi

java - jar 顶层内的多个入口点(主类)

转载 作者:行者123 更新时间:2023-12-01 17:37:20 25 4
gpt4 key购买 nike

值得一提的是,我使用 Maven 作为我的构建管理工具。我有一个 jar(我们称之为 dep.jar),它将作为依赖项包含到最终项目 (final.jar) 中。dep.jar 有一个带有 main 方法的类。我需要在我的 final.jar 的顶级目录中有几个入口点(具有主要方法的类),以便我可以根据需要使用入口点。包括来自 dep.jar 的一个。

我考虑过:

  1. 更改 jar 内的 META-INF/MANIFEST.MF 文件。正如 Oracle 所说,不可能引用 jar 依赖项(BOOT-INF/lib 目录)内的主类 -> https://docs.oracle.com/javase/tutorial/deployment/jar/downman.html ;
  2. Uber jar - 不是一个选项,我依赖于 Java 代码库内的 jar 目录结构
  3. 使用像这样的特殊类加载器 http://www.jdotsoft.com/JarClassLoader.php 。但这意味着更改 final.jar 的 main 方法,由于项目限制,我无法执行此操作。
  4. 使用maven-dependency-plugin,但它可以解压内部jar(dep.jar)并将类复制到maven工作目录target,其中在打包阶段会被打包到BOOT-INF/classes目录中。同样,我无法从那里引用主类。如果我解压并将它们复制到与 target 不同的位置 - 复制的类将不会出现在我的 final.jar

是否有任何其他插件或选项如何在 JAR 构建期间从 final.jar 依赖 jar dep.jar 添加类到 final.jar 的顶层?

编辑:final.jar 项目如下所示:

final.jar
|_______BOOT-INF
|_______lib
| |_______dep.jar (contains main class I want to invoke)
|_______classes
|__________dir (directory I want to copy on demand with help of CLI)

最佳答案

我在这里找到了解决方案 Spring Boot - How to specify an alternate start-class? (Multiple Entry Points) 。最终使用-Dloader.main启动 jar 时的属性。命令行如下所示:java -jar -Dloader.main=<main_class> ./final.jar

关于java - jar 顶层内的多个入口点(主类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61015646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com