gpt4 book ai didi

java - 调用可执行 jar 文件中类的方法?

转载 作者:行者123 更新时间:2023-12-02 05:49:28 24 4
gpt4 key购买 nike

我在 Java 类中创建了一个方法来进行一些加密。此类使用一些外部 jar 文件中的方法。此方法的请求者要求我将我的类和外部 jar 文件包含在一个 jar 文件中。我使用 Eclipse 作为我的 IDE。据我了解,我需要在 Eclipse 中创建一个可执行的 jar 文件,以便将外部 jar 文件打包到我自己的 jar 文件中。在我的项目中,我还在项目中创建了一个带有 main 方法的基本类,该类仅调用上面提到的方法(为可执行 jar 的运行配置提供“主类”)。我将项目导出到可执行 jar 文件,并验证它是否在命令提示符窗口中运行 (java -jar jar-file-name)。我在 Eclipse 中创建了第二个测试项目,并将可执行 jar 文件添加到构建路径中。我在此测试项目中创建了一个简单的类,其中的 main 方法调用上述方法(在我的可执行 jar 文件中的类上)。编译完成后,我将这个项目导出到一个普通的 jar 文件,并尝试运行它(使用 java -classpathexecutable-jar-file- said-above;test-project-jar-file class-name。这失败并出现 NoClassDefFoundError ,引用在外部 jar 文件之一中找到的类。

我在这里缺少什么?这是我第一次使用可执行 jar 文件。在可执行 jar 文件中的类上调用方法时,是否需要执行任何特殊操作?

最佳答案

可执行 jar 文件没有什么特别之处。唯一的区别是可执行 jar 文件定义了一个主类(带有 main() 方法),该主类将在您运行 java -jar ... 时启动。

jar 文件实际上是一个普通的 zip 文件,其中包含类、资源和一些附加元信息。当您运行 jar 文件并收到 ClassNotFoundException 时,这是您的类路径的问题。因此,您在某种程度上缺少您所依赖的位于外部库中的类。

有两种方法可以解决您的问题:

  1. 运行可运行 jar 时将库 jar 添加到类路径
  2. 重新打包可执行 jar 以包含外部库中的所有类

我不知道Eclipse导出功能是做什么的。但我建议首先使用您最喜欢的 zip 实用程序查看导出的 jar 文件。我还建议使用像 Maven 这样的构建工具来创建你的 jar。以下是如何使用 Maven 程序集插件完成此操作的示例:https://www.mkyong.com/maven/create-a-fat-jar-file-maven-assembly-plugin/

关于java - 调用可执行 jar 文件中类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56063502/

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