我正在开发一个学校项目,我正在编写一个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。
谢谢,如果我能提供更多信息,请告诉我。
问题是您的JAR具有依赖项,包括Scala运行时,需要在运行时使用java
参数传递给-classpath
。
如果单击IntelliJ中的“play”来运行项目,那么您将看到IntelliJ在输出开始时使用的java命令(如果需要,单击“...”展开它)。您会注意到该命令包含一个-classpath
参数,其中包含很长的必需JAR列表。您可以将此命令复制并粘贴到shell中以运行JAR(如果需要)。
我认为您可能正在寻找的是如何创建一个包含所有依赖项的JAR,如下所述:How to build jars from IntelliJ properly?
(您也可以通过从IntelliJ运行项目而不是从JAR运行项目来避免此问题,具体取决于您要实现的目标。)