我有一个项目:
假设HelloWorld.scala是这样的:
package pkg2
object HelloWorld extends App {
println("Hello, world!")
}如何从HelloWorld调用JHelloWorld:
package pkg1;
public class JHelloWorld {
public static void main(String[] args) {
//pkg2.HelloWorld.main(args);
}
}编译器抱怨pkg2不存在.
我是否需要将scala代码放在另一个模块(jar文件)中,然后从那里开始呢?
感谢您的输入,但在最后,这个教程确实有所帮助。
虽然我使用的是maven-scala-plugin,但我遇到了两个问题:
现在我的pom看起来是这样的:
<build>
<sourceDirectory>src/main/scala</sourceDirectory>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<!-- Run scala compiler in the process-resources phase, so that dependencies
on scala classes can be resolved later in the (Java) compile phase -->
<execution>
<id>scala-compile-first</id>
<phase>process-resources</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!-- Run scala compiler in the process-test-resources phase, so that
dependencies on scala classes can be resolved later in the (Java) test-compile
phase -->
<execution>
<id>scala-test-compile</id>
<phase>process-test-resources</phase>
<goals>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>发布于 2017-02-04 00:35:59
有几件事你应该检查一下。
首先,必须确保项目中有scala。如果您正在使用IntelliJ IDEA,那么一旦您进入scala文件,它就会警告您。
.iml应该有这样一个条目:
< orderEntry type="library" name="scala-sdk-2.11.7" level="application" />如果使用maven,应该添加如下条目:
< dependency>
< artifactId>scala-library</artifactId>
< groupId>org.scala-lang</groupId>
< version>${scala.version}</version>
</dependency>一旦确保您拥有scala,就应该在使用scala对象之前导入它:
pkg1
package pkg1
object HelloWorld extends App {
println("Hello, world!")
}另外,不要忘记main方法应该用new JHelloWorld()实例化类
pkg2
package pkg2;
import pkg1.HelloWorld$;
public class JHelloWorld {
HelloWorld$ scalaObject = HelloWorld$.MODULE$;
public static void main(String argv[]) {
new JHelloWorld().scalaObject.main(argv);
}
}以上各项应能正常工作。
Connected to the target VM, address: '127.0.0.1:46179', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:46179', transport: 'socket'
Hello, world!
Process finished with exit code 0https://stackoverflow.com/questions/42034987
复制相似问题