import org.apache.tools.ant.Project
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
我尝试使用以下命令运行此代码:
java -cp D:\tools\apache-ant-1.7.0\lib\ant.jar;D:\tools\scala-2.9.1.final\lib\scala-compiler.jar;D:\tools\scala-2.9.1.final\lib\scala-library.jar -Dscala.usejavacp=true scala.tools.nsc.MainGenericRunner D:\test\scala\ant.scala
出现以下错误:
D:\test\scala\ant.scala:1: error: object apache is not a member of package org
import org.apache.tools.ant.Project
^
one error found
有什么问题?
更新
我可以看到无法导入任何org.xxx包
与javax.xml.xxx包相同的问题。
D:\test\test2.scala:2: error: object crypto is not a member of package javax.xml
import javax.xml.crypto.Data
^
one error found
实际上我无法导入任何东西!
D:\test\test3.scala:3: error: object test is not a member of package com
import com.test.utils.ant.taskdefs.SqlExt
^
one error found
答案 0 :(得分:3)
您没有在类路径中包含ant jar文件。
编译器有效地构建表示嵌套包结构的对象。已经有一个名为org的顶级软件包来自JDK(例如org.xml),但没有额外的jar org.apache不存在。
答案 1 :(得分:2)
我发现一般情况下,如果出现Object XXX is not a member of package YYY
类型的错误,您应该:
检查所有文件是否都在包中,即。不在顶级src/
目录
答案 2 :(得分:1)
我使用scala.bat
进行了实验(取消注释最后命令行的回显,请参阅以echo "%_JAVACMD%" ...
开头的行)并发现这应该有效:
java -Dscala.usejavacp=true -cp d:\Dev\scala-2.9.1.final\lib\scala-compiler.jar;d:\Dev\scala-2.9.1.final\lib\scala-library.jar scala.tools.nsc.MainGenericRunner -cp d:\Dev\apache-ant-1.8.2\lib\ant.jar D:\test\scala\ant.scala
答案 3 :(得分:0)
我会检查'D:\ tools \ apache-ant-1.7.0 \ lib \ ant.jar'是否存在并检查它是否已损坏(长度为0或无法打开'jar tf D:\工具\阿帕奇-ANT-1.7.0 \ lib中\的ant.jar')。
答案 4 :(得分:0)
使用scala命令运行:
scala -cp D:\ tools \ apache-ant-1.7.0 \ lib \ ant.jar; D:\ tools \ scala-2.9.1.final \ lib \ scala-compiler.jar; D:\ tools \ scala-2.9.1.final \ lib \ scala-library.jar D:\ test \ scala \ ant.scala