如果我使用名为HelloWorld.scala的scala对象在Spring Tool Suit中创建一个Scala项目,只需要以下几行:
package ScalaMavenTest
object HelloWorld {
def main(args: Array[String]) {
println("Hello world !!!")
}
}
然后我尝试运行它,一切顺利并打印出“Hello World !!!”
但是,如果我将它转换为maven STS再也找不到主类了。以下是我遵循的步骤:
1-I将Scala项目转换为Maven:
右键点击该项目 - >配置 - >转换为Maven项目 - >完成
2-我通过以下方式更改了标准pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ScalaMavenTest</groupId>
<artifactId>ScalaMavenTest</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>https://oss.sonatype.org/content/groups/scala-tools/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>scala-tools.org</id>
<name>Scala-tools Maven2 Repository</name>
<url>https://oss.sonatype.org/content/groups/scala-tools/</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.11.4</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<pluginManagement>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<executions>
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
3 - 右键单击项目 - &gt;作为Maven Build运行... - &gt;目标:干净安装
4 - 我尝试将Scala对象作为Scala应用程序运行:
4.1右键单击项目 - &gt;属性 - &gt; Scala编译器 - &gt;选择使用项目设置 - &gt; Scala安装 - &gt;修复了Scala 安装2.11.8(内置)
4.2右键单击Scala对象 - &gt;运行方式 - &gt;运行配置 - &gt;双击Scala应用程序:
Project: ScalaMavenTest
Main Class: ScalaMavenTest.HelloWorld
但输出是以下错误:
错误:无法找到或加载主类ScalaMavenTest.HelloWorld
这个问题在两年前就已经得到了很好的问题:
Running a scala application in maven project
但是我尝试了所有给出的答案,但仍然有同样的错误。我想可能的解决方案需要更新或我遗漏了一些东西。还有其他建议吗?
额外详情:
Spring Tool Suit:sts-3.8.2.RELEASE
Eclipse Marketplace - &gt;安装: -Maven(Java EE)Eclipse WTP集成(Luna / Mars)1.2.3 -Scala IDE 4.2.x
答案 0 :(得分:0)
我找到了一个显然有效的解决方案。 (但无法解释100%为什么)
当您创建maven项目时,项目的结构类似于:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
但是,当您将Scala项目转换为Maven时,不会自动生成该结构(通过执行配置 - >转换为Maven项目)
所以我做的是通过在src中添加两个文件夹来自己创建文件夹结构 - &gt;主要 - &gt; java(嵌套)
然后我将HelloWorld.scala移动到该java文件夹中。
最后:
右键单击Scala对象 - &gt;运行方式 - &gt;运行配置 - &gt;双击Scala应用程序:
Project: ScalaMavenTest
Main Class: ScalaMavenTest.HelloWorld