无法将IntelliJ IDEA程序编译为可运行的JAR

问题描述 投票:0回答:1

我正在开发一个学校项目,我正在编写一个Scala类,作为Java项目的一部分,在MacOS上使用IntelliJ IDEA。这是文件夹结构的样子:

TopLevelFolderName
  .idea
  .settings
  bin
  classes
    artifacts
    TopLevelFolderName.jar
  src
    dir1
      JavaClass.java
      Main.java
    dir2
      ScalaClass.scala
    META-INF
    .classpath
    .project
    TopLevelFolderName.iml

我可以使用main中的Scala代码构建并运行程序以在Main类中运行ScalaClass函数。

但是,当我设置项目结构以在classes/artifacts文件夹中构建JAR时,当我转到菜单并单击Run TopLevelFolderName.jar时,JAR文件不起作用。我收到错误:

Exception in thread "main" java.lang.NoClassDefFoundError: scala/Tuple2

有谁知道如何设置我的项目,以便包含Scala标准依赖项并使JAR文件可以访问?这是我第一次使用IntelliJ IDEA。

谢谢,如果我能提供更多信息,请告诉我。

java scala intellij-idea classnotfoundexception executable-jar
1个回答
1
投票

问题是您的JAR具有依赖项,包括Scala运行时,需要在运行时使用java参数传递给-classpath

如果单击IntelliJ中的“play”来运行项目,那么您将看到IntelliJ在输出开始时使用的java命令(如果需要,单击“...”展开它)。您会注意到该命令包含一个-classpath参数,其中包含很长的必需JAR列表。您可以将此命令复制并粘贴到shell中以运行JAR(如果需要)。

我认为您可能正在寻找的是如何创建一个包含所有依赖项的JAR,如下所述:How to build jars from IntelliJ properly?

(您也可以通过从IntelliJ运行项目而不是从JAR运行项目来避免此问题,具体取决于您要实现的目标。)

© www.soinside.com 2019 - 2024. All rights reserved.