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

时间:2019-10-07 05:31:20

标签: java gradle intellij-idea javafx

我最近开发了一个使用Simple Json的简单JavaFX游戏。该依赖关系已在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

我该如何解决?

1 个答案:

答案 0 :(得分:1)

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

因此,默认情况下生成的jar文件没有依赖项类或资源。

有许多解决方案可以从具有依赖项的jar文件中运行Java程序:

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