修改
版本信息,截至2013年1月27日:
Scala 2.10.0
IntelliJ IDEA Leda 123.139 (EAP)
Scala Plugin version 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条不同的错误消息,我会将它们上传到pastie.org,否则会占用太多空间: http://pastie.org/pastes/5887847/text 。
我还没有尝试过:回到上面的任何应用程序/库的早期版本,深入 SBT (我觉得这不值得。)
我对这个帖子有什么期望?我希望有人能为这个问题提供一个可靠的解决方案,在最好的情况下,不会提及 SBT (可选)。
此外,在旁注:为什么Joda-Time以破碎的格式发送他们的库?这背后有什么秘密,每个人都应该知道吗?将FromString
包含在发布版本中有什么问题? (我仍然认为这就是原因)
的问候,
Danyel
原始帖子:(你可以忽略这一点)
我有最新版本的IntelliJ(123.139),Scala 2.10.0,到目前为止没有遇到任何问题。
我没有使用Java时间库,而是急于使用Joda Time,并且看到在Scala中使用了很多隐含的内容,我想尝试一下!我添加了所有库,但不会识别出implicits。当我尝试通过IDEA弹出菜单编译它时,出现以下错误:
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不能编译的原因。所以我用Google搜索我应该做的事情。它到处说“SBT,SBT !!”,我试图找出这个SBT是什么,所以我安装了它:版本0.12.2,手动安装(我使用的是Windows 7)来自http://www.scala-sbt.org/ 。我想让它与我的IntelliJ一起运行,所以我转到~\.sbt\plugins
,并使用行build.sbt
创建了一个文件addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.2.0")
,并从https://github.com/mpeltonen/sbt-idea下载了zip文件,将其解压缩,然后用CMD去了那个文件夹,在sbt中输入了sbt
和gen-idea
,它做了很多事情,似乎都解决了。所以我去了我想要运行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"
然后,为了包含scalaj-time,我转到了<PROJECT>\project\project\
并使用第build.sbt
行创建了libraryDependencies += "org.scalaj" %% "scalaj-time" % "0.6"
。
最后,我去了&lt; PROJECT&gt;使用CMD,输入“sbt”,它(下)加载了很多文件,它似乎工作了,然后我输入gen-idea
,一切都很好。
我打开IntelliJ,我可以轻松打开项目。当我打开Project Structure时,我去了Modules,有两个模块:Project
和Project-build
。我忽略了Project-build one,点击了Project模块,并且有很多源文件夹和测试文件夹不存在:src/main/scala
等等,我删除了它们并添加了src
作为源文件夹。
我注意到Joda-Time没有包含在外部库中(顺便说一句,我使用的是Joda-Time 2.1和Scalaj-time 0.6),所以我不得不自己添加它们。 joda-time库是一个.jar而scalaj-time是一个文件夹,但这应该没问题,对吧?我可以运行一个简单的println( DateTime.now )
指令(我不知道之前是否可能;没试过),但+ 2.months
仍然不可能。这是一个截图,所以你明白了:
我想我已经详细解释了我是如何进行的,我希望你能找到我做错的事情。我已经工作了好几个小时来解决这个问题,但最后,我降落在我刚开始的地方......
感谢您的时间!
问候!
答案 0 :(得分:4)
<强> How to import FromString for joda-time? 强>
这就像一个魅力(现在,谁知道事情会如何发生)。我很生气,我一开始并没有想到这一点...... Grrrrr。
答案 1 :(得分:2)
修改强>
这个答案无效。请参阅主帖中的EDIT。 虽然这适用于SOMETIMES,但它仍然在很大程度上未定义。当我创建一个新项目时,它从工作到不工作(不编译,打印随机错误)不等,但在另一个更大的项目中,它具有相同的未定义行为,除了现在(无论出于何种原因)它不起作用,期。 (在我新创建的项目中,它仍然有所不同)
原始帖子:
所以,经过另外10分钟的尝试和谷歌搜索,我找到了Scalaj时间的.JAR(0.6)。
我就像“好吧,它带来了什么伤害?”,下载它,并将其包含在内而不是文件夹中。
Tadaaa,一切正常......我所需要的只是这些线路:
object Test extends App {
import org.scala_tools.time.Imports._
println( DateTime.now + 2.months )
}
没有SBT,没有,没有任何其他进口。您只需从http://mvnrepository.com/artifact/org.scalaj/scalaj-time_2.9.1(版本0.6,截至目前)和Joda Time(V 2.1)下载scalaj_time,创建一个包含2个以上jar的ScalajTime库,并将其添加到您的依赖项中。您只需要一个导入语句就可以了。
也许主要的问题是我无法从库中导入SOURCE文件?因为我导入的源文件夹似乎没有任何影响。我不知道我是如何“忽视”这个事实,但假设它似乎很愚蠢。
所以,现在它有效。
问候。