Scala newb(这是我使用它的第二天)。我想让我的Scala脚本中的log4j日志记录工作。脚本和结果如下,任何关于出了什么问题的想法?
[sean@ibmp2 pybackup]$ cat backup.scala import org.apache.log4j._ val log = LogFactory.getLog() log.info("started backup") [sean@ibmp2 pybackup]$ scala -cp log4j-1.2.16.jar:. backup.scala /home/sean/projects/personal/pybackup/backup.scala:1: error: value apache is not a member of package org import org.apache.log4j._ ^ one error found
答案 0 :(得分:2)
我在Windows下重现它:' - classpath'的分隔符必须是';'那里(不是':')。你使用cygwin还是某种unix模拟器?
但Scala脚本在classpath中没有当前目录的任何地方工作。尝试使用:
$ scala -cp log4j-1.2.16.jar backup.scala
JFI:LogFactory是一类slf4j库(不是log4j)。
<强>更新强>
另一种可能的情况:在类路径中破坏jar,可能在下载期间或其他方面。 Scala解释器仅报告包的不可用成员。
$ echo "qwerty" > example.jar
$ scala -cp example.jar backup.scala
backup.scala:1: error: value apache is not a member of package org
...
需要检查jar文件的内容:
$ jar -tf log4j-1.2.16.jar
...
org/apache/log4j/Appender.class
...
答案 1 :(得分:1)
你还记得把log4j.jar放在你的类路径中吗?
答案 2 :(得分:0)
当使用Eclipse开始使用Scala Development进行类似的问题时,做一个干净的构建解决了这个问题。
猜猜Scala工具还不成熟等。
答案 3 :(得分:-1)
您可以尝试使用Configgy,而不是直接使用log4j。 Scala Way™与log4j以及配置文件一起使用。它也适用于SBT和Maven。
答案 4 :(得分:-1)
I asked and answered this question myself,看看:
将其放在
src/main/resources/logback.xml
下。当SBT进行工件装配时,它将被复制到正确的位置。