我在intellij中有一个模块,可以在Java中创建可以完美运行的主要方法,但是当我在scala中创建它们并尝试运行它们时,我得到以下信息:
Error: Could not find or load main class xxx
我的项目同时依赖于Java和Scala类。我该怎么做才能允许Scala主类运行?
编辑:
根据要求,这是我尝试与scala一起运行的主要类的节选。我知道代码没有错,因为当我将intellij中的代码初始化为scala项目时,它可以工作。这里的问题是我从一个空白项目开始,所以我不知道魔术intellij在幕后做了什么以使scala主类正常运行。
object WebProxyServer extends Logging {
def main(args: Array[String]): Unit = {
// implementation
}
}
class WebProxyServer() {
}
答案 0 :(得分:4)
运行Scala代码的最简单方法是创建一个扩展strtoX
的{{1}},如下所示:
strtol, strtoul, strtod, etc...
Scala在创建对象时将执行该对象中的所有代码。 (参数在object
的{{1}}成员中可用)
要从IntelliJ运行此程序,请选择“运行->编辑配置”,然后单击“ +”并选择“应用程序”并填写对话框。 “ Main Class”参数的下拉列表应包括扩展App
的所有对象,因此请选择要运行的类。完成此操作后,您的object Main extends App {
println("Hello World")
}
应该会出现在“运行”菜单上。
您可以具有扩展args
的多个类和App
菜单中的多个项目。我用它来从IDE调试代码的特定部分,而无需运行主程序。
您也可以使用App
方法创建对象,如下所示:
Main
一旦构建完成,您就可以如上所述将App
添加为IntelliJ中的“主类”。所有具有Run
方法的对象也将出现在“ Main Class”下拉菜单中。
两种方法都可以接受,但不要将两者结合。也就是说,请勿继承自main
,然后覆盖object Main {
def main(args: Array[String]): Unit = {
println("Hello World")
}
}
中的Main
方法。
答案 1 :(得分:2)
要将Scala代码添加到Intellij中的现有Java模块,请右键单击模块名称(通常是项目视图中的顶级文件夹),然后单击“添加框架支持”,然后在选项列表中检查Scala。
要将Scala代码添加到Intellij项目中的新模块,请转到File-> New Module,然后从选项列表中选择Scala。
如果您的目录结构如下:
src
|
|-main
|
|-java
| |-....java packages
|
|-scala
|-....scala packages
然后不要忘记右键单击项目视图中的scala目录,然后选择“将目录标记为->源根目录”
答案 2 :(得分:0)
确保将main方法添加到对象,而不是类。主要方法必须是静态的。如果要向现有类中添加main方法,则可以添加一个伴随对象,该对象只是与该类同名的对象。
class MyApp {
// bad main method; will not run
def main(args: Array[String]): Unit = println("hello world")
}
// companion object to MyApp class
object MyApp {
// good main method; will run fine
def main(args: Array[String]): Unit = println("hello world")
}
答案 3 :(得分:0)
首先尝试检查IDE的SDK配置,如果这会导致您出错,则
object WebProxyServer {
def main(args: Array[String]): Unit = {}
}
然后根据需要尝试extends App
和override
main(args: Array[String])