【问题标题】:Application runs fine in Intellij but doesn't work when packaged into an exe file应用程序在 Intellij 中运行良好,但打包成 exe 文件时无法运行
【发布时间】:2021-07-28 22:27:48
【问题描述】:

我使用picocli 构建了一个非常简单的命令行应用程序,我想将它打包成一个可执行文件。我首先使用 Maven 包将其打包成 jar 文件,然后按照 SO 上的几个用户的建议使用 Launch4J 来获取可执行文件。但是,当我在命令提示符下运行 Application.exe 时,它会引发 NoClassDefFound 错误。

> Exception in thread "main" java.lang.NoClassDefFoundError:
> picocli/CommandLine                                                 
> at mycli.HelloCli.main(HelloCli.java:48)                              
> Caused by: java.lang.ClassNotFoundException: picocli.CommandLine      
> at java.net.URLClassLoader.findClass(Unknown Source)                  
> at java.lang.ClassLoader.loadClass(Unknown Source)                    
> at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)         
> at java.lang.ClassLoader.loadClass(Unknown Source)                    
> ... 1 more

应用程序在 IntelliJ 中执行时运行良好。我尝试通过查看类似于these 的答案来添加我创建的自定义 jar 文件,但它似乎没有帮助。我也尝试更改执行文件夹,但这也不能解决错误。

【问题讨论】:

    标签: java intellij-idea launch4j picocli


    【解决方案1】:

    从我在 SO 中搜索的几个答案中,我意识到 picocli jar 需要位于类路径上。因此,我将“主类”添加为包含我的 main 方法的类,并为 jar 文件指定了“类路径”,该文件是通过在配置 Launch4J 时从所有存在的依赖项中构建一个工件而创建的。

    有关如何从项目的依赖项中构建工件 jar 的详细信息,如果您使用 Eclipse,请访问此answer,如果您使用 IntelliJ,请访问此answer。)

    【讨论】:

      猜你喜欢
      • 2021-06-12
      • 1970-01-01
      • 2012-12-09
      • 2012-01-18
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 2017-11-16
      • 1970-01-01
      相关资源
      最近更新 更多