java - 执行gradle构建的JAR时出现简单的Json ClassNotFoundException

标签 java gradle intellij-idea javafx

我最近开发了一个简单的 JavaFX 游戏,它使用 Simple Json。依赖项已在 Gradle 依赖项中定义,游戏可以使用 Gradle run 命令正常运行。但是,当我使用 - Gradle Jar 创建 jar 文件并运行 时,会显示以下错误:

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

enter image description here

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

enter image description here

我该如何解决这个问题?

最佳答案

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

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

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

  1. 将应用程序 jar 以及依赖项 jar 放在目录 (lib) 中,并在运行主类时将其添加到类路径中。
java -cp lib/*.jar  com.game.MainClass
  • 创建一个胖( super ) jar 。 Gradle 插件如 Shadow可以生成一个包含所有依赖项的 jar。只需在Manifest中指定主类即可。
  • java -jar myAppFat.jar
    
  • 使用类似 Launch4J 的插件生成 Windows 可执行文件。如果您想向用户提供简单的“点击运行”应用程序,这非常有用。
  • 关于java - 执行gradle构建的JAR时出现简单的Json ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58263943/

    相关文章:

    maven - 如何为IntelliJ IDEA项目禁用或启用Gradle/Maven自动导入?

    gradle - 在gradle中跳过comileJava和processResources任务以进行Kotlin部署

    Gradle : Copy different properties file depending on the environment and create jar

    jboss - Intellij Idea 上的 EJB 3x 项目示例?

    java - Hibernate 实体依赖于列值

    java - 是否可以将推文存储在 csv 文件中?

    java - Android - 将 map v2 实现到抽屉导航

    java - intelliJ IDEA 中的自定义 spring 命名空间处理程序

    git - IntelliJ IDEA - 如何从命令行触发 Git 冲突解决

    java - Android 将 View 转换到其真实类