【问题标题】:Simple Json ClassNotFoundException when executing JAR built by gradle执行 gradle 构建的 JAR 时的简单 Json ClassNotFoundException
【发布时间】:2019-10-07 05:31:20
【问题描述】:

我最近开发了一个使用 Simple Json 的简单 JavaFX 游戏。依赖项已在 Gradle 依赖项中定义,游戏使用 Gradle run 命令运行良好。但是当我使用 - Gradle Jar 并运行 创建一个 jar 文件时,会出现以下 error

Caused by: java.lang.ClassNotFoundException: org.json.simple.parser.ParseException

这是我的 build.gradle 文件的图片:

我该如何解决这个问题?

【问题讨论】:

  • 我遇到了同样的问题。我手动添加了罐子,它对我有用。尝试手动添加。
  • 如何手动添加Jar?
  • 在构建路径中。

标签: java gradle intellij-idea javafx


【解决方案1】:

这是默认的包行为。 Gradle 和 Maven 等工具的打包阶段仅复制应用程序源(Java 类和 src 目录中的资源),不包含依赖项中的文件。

因此默认生成的jar文件没有依赖类或资源。

从带有依赖关系的jar文件运行java程序有很多解决方案:

  1. 将应用 jar 和依赖 jar 放在一个目录 (lib) 中,并在运行主类时将其添加到类路径中。
java -cp lib/*.jar  com.game.MainClass
  1. 创建一个胖(超级)罐子。像Shadow 这样的 Gradle 插件可以生成一个包含所有依赖项的单个 jar。只需在 Manifest 中指定主类即可。
java -jar myAppFat.jar
  1. 使用像Launch4J 这样的插件来生成Windows 可执行文件。如果您想向用户发送简单的“点击运行”应用程序,这非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2021-01-21
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多