编辑:
版本信息,截至 2013 年 1 月 27 日:
Scala 2.10.0
IntelliJ IDEA Leda 123.139 (EAP)
Scala 插件版本 0.7.108 (Nightly Build)
JDK 7u11
Joda Time 2.1
ScalaJ-Time 2.9.1-0.6
我已经放弃尝试使用SBT,因为我没有看到任何进展 - 我不知道如何结合IntelliJ和SBT,经过数小时的尝试,我最终到达了我最初开始的地方.
我的 JodaTime 库包含 Scalaj-Time jar:
我已经尝试了几乎所有设置组合,从联合编译(首先是 Scala,然后是 Java 和 vv)、外部构建,到将我的 JodaTime 库提升到依赖项中的 Scala 库(是的,我什至已经这样做了),以及使缓存失效。我得到的只是一堆错误——无论我是“制作”项目、“运行”当前文件还是“编译”它——都是随机产生的。而且,有时,它会起作用。是的,尽管听起来很愚蠢,但这种行为是未定义的。我不确定是什么原因造成的。我统计了出现的 3 条不同的错误信息,我会将它们上传到 paste.org,否则会占用太多空间:http://pastie.
我没有尝试过的:回到前面的任何应用程序/库的早期版本,深入了解SBT(我认为这不值得)。
我对这个线程有什么期望?我希望有人为这个问题提供一个可靠的解决方案,在最好的情况下,不会包括任何提及SBT(可选)。
另外,附带说明:为什么 Joda-Time 以损坏的格式发布他们的库?这背后有什么秘密是每个人都应该知道的吗?包含FromString
在发布版本中的问题是什么?(我仍然认为这就是一切的原因)
问候,
丹尼尔
原帖:(你可以忽略这个)
我有最新版本的 IntelliJ (123.139),Scala 2.10.0,到目前为止还没有遇到任何问题。
我没有使用 Java 时间库,而是渴望使用 Joda Time,并且看到 Scala 中有很多隐式可以使用,我想尝试一下!我添加了所有库,但无法识别隐式。当我尝试通过 IDEA Popup Menu 编译它时,出现以下错误:
error while loading DateTime, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/DateTime.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 10 at byte 42)
error while loading DateTimeZone, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/DateTimeZone.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 7 at byte 44)
error while loading AbstractInstant, class file '~\workspace\Libraries\JodaTime\joda-time-2.1.jar(org/joda/time/base/AbstractInstant.class)' is broken
(class java.lang.RuntimeException/bad constant pool tag 10 at byte 10)
我去了那些来源DateTime
并注意到它org.joda.convert.FromString;
是进口的,但资源不存在!我猜是因为这个原因 Scala 不会编译。所以我用谷歌搜索我应该做什么。到处都是“SBT,SBT!!”,我试图找出这个 SBT 是什么,所以我安装了它:来自http://www的版本 0.12.2,手动安装(我使用的是 Windows 7) .scala-sbt.org/。我希望它与我的 IntelliJ 一起运行,所以我去了,并使用该行~\.sbt\plugins
创建了一个文件并从https://github.com/mpeltonen/sbt-idea下载了 zip ,解压缩它,然后使用 CMD 进入那个文件夹, 输入和build.sbt
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0")
sbt
gen-idea
在 sbt 中,它做了很多事情,而且似乎都解决了。所以我去了我想要运行 Joda Time 的项目,首先,将 Scala 2.10.0 包含到 SBT 似乎非常困难。我创建了一个文件<PROJECT>\build.sbt
并用这些行填充它:
name := "Project"
version := "1.0"
scalaHome := Some(file("C:/Program Files (x86)/scala"))
scalaVersion := "2.10.0"
<PROJECT>\project\project\
然后,为了包含 scalaj-time,我build.sbt
使用libraryDependencies += "org.scalaj" %% "scalaj-time" % "0.6"
.
最后,我用CMD进入<PROJECT>,输入“sbt”,它(下载)了很多文件,似乎成功了,然后我进入gen-idea
,一切都很好。
我打开了 IntelliJ,我可以轻松打开项目。当我打开项目结构时,我去了模块,有两个模块:Project
和Project-build
. 我忽略了项目构建,单击项目模块,并且有很多不存在的源文件夹和测试文件夹:src/main/scala
等等,我将它们全部删除并添加了我src
的源文件夹。
我注意到外部库中不包含 Joda-Time(顺便说一句,我使用 Joda-Time 2.1 和 Scalaj-time 0.6),所以我必须自己添加它们。joda-time 库是一个 .jar 而 scalaj-time 是一个文件夹,但这应该没问题,对吧?我可以运行一个简单的println( DateTime.now )
指令(我不知道以前是否可能;没有尝试),但+ 2.months
仍然不可能。这是一个屏幕截图,所以你明白了:
我想我已经非常详细地解释了我是如何进行的,我希望你能找到我做错的事情。我已经工作了好几个小时来解决这个问题,但最终,我还是回到了最初的位置……
感谢您的时间!
问候!