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

时间:2018-03-03 00:09:44

标签: java scala intellij-idea classnotfoundexception executable-jar

我正在开发一个学校项目,我正在编写一个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。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

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