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