【发布时间】:2014-02-22 05:26:00
【问题描述】:
我有一个从 Java 调用的 Scala 库。
这是 Scala 代码。
package org.fun
object ScalaPower{
def showMyPower(time:Int) = {
(0 to time-1).mkString(", ")
}
}
这是 Java 代码。
import org.fun.*;
public class Test {
public static void main(String args[]) {
System.out.println("show my power: " + ScalaPower.showMyPower(3));
}
}
使用此构建脚本:
SCALA_LIB=~/bin/jar/scala/scala-library.jar
scalac -d ~/temp/java s.scala
javac -cp .:~/temp/java:$SCALA_LIB Test.java -d ~/temp/java
java -cp .:~/temp/java:$SCALA_LIB Test
我有错误。
Test.java:1: error: package org.fun does not exist
import org.fun.*;
^
Test.java:5: error: cannot find symbol
System.out.println("show my power: " + ScalaPower.showMyPower(3));
^
symbol: variable ScalaPower
location: class Test
2 errors
有趣的是,当我从环境变量中获取类路径时,我没有任何问题。
SCALA_LIB=~/jar/scala/scala-library.jar
JP=.:~/temp/java:~/temp/java2:$SCALA_LIB
scalac -d ~/temp/java s.scala
scalac -d ~/temp/java2 s2.scala
javac -cp $JP Test.java -d ~/temp/java
java -cp $JP Test
这是为什么?我是否必须始终使用环境变量来设置带有-cp 的类路径?还是我犯了一些错误?我检查了 Mac OS X 和 Linux;他们都使用 $JP,但不使用直接路径征用。
代码复制自这篇帖子:How do you call a Scala singleton method from Java?
【问题讨论】:
标签: java classpath javac scalar