编译Play框架测试时出现错误“ scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象scala.runtime” - java

当我对系统上的每个播放项目执行“播放清除测试”时,出现此错误:

[info]将9个Scala源代码和302个Java源代码编译为$ HOME / Workspace / sis / target / scala-2.10 / test-classes ...
[错误]加载时出错,打开zip文件时出错
scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象scala.runtime。
在scala.reflect.internal.MissingRequirementError $ .signal(MissingRequirementError.scala:16)
在scala.reflect.internal.MissingRequirementError $ .notFound(MissingRequirementError.scala:17)
在scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:48)
在scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:40)
在scala.reflect.internal.Mirrors $ RootsBase.getModuleOrClass(Mirrors.scala:61)
在scala.reflect.internal.Mirrors $ RootsBase.getPackage(Mirrors.scala:172)
在scala.reflect.internal.Mirrors $ RootsBase.getRequiredPackage(Mirrors.scala:175)
在scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackage $ lzycompute(Definitions.scala:181)
在scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackage(Definitions.scala:181)
在scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackageClass $ lzycompute(Definitionsscala:182)
在scala.reflect.internal.Definitions $ DefinitionsClass.RuntimePackageClass(Definitions.scala:182)
在scala.reflect.internal.Definitions $ DefinitionsClass.AnnotationDefaultAttr $ lzycompute(Definitions.scala:997)
在scala.reflect.internal.Definitions $ DefinitionsClass.AnnotationDefaultAttr(Definitions.scala:996)
在scala.reflect.internal.Definitions $ DefinitionsClass.syntheticCoreClasses $ lzycompute(Definitions.scala:1126)
在scala.reflect.internal.Definitions $ DefinitionsClass.syntheticCoreClasses(Definitions.scala:1125)
在scala.reflect.internal.Definitions $ DefinitionsClass.symbolsNotPresentInBytecode $ lzycompute(Definitions.scala:1169)
在scala.reflect.internal.Definitions $ DefinitionsClass.symbolsNotPresentInBytecode(Definitions.scala:1169)
在scala.reflect.internal.Definitions $ DefinitionsClass.init(Definitions.scala:1234)
在scala.tools.nsc.Global $ Run。(Global.scala:1281)
在xsbt.CachedCompiler0.run(CompilerInterface.scala:87)
在xsbt.CachedCompiler0.run(CompilerInterface.scala:72)
在xsbt.CompilerInterface.run(CompilerInterface.scala:27)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
在java.lang.reflect.Method.invoke(Method.java:597)
在sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:73)
在sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:35)
在sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:29)
at sbt.compiler.AggressiveCompile $$ anonfun $ 4 $$ anonfun $ compileScala $ 1 $ 1.apply $ mcV $ sp(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile $$ anonfun $ 4 $$ anonfun $ compileScala $ 1 $ 1.apply(AggressiveCompile.scala:71)
at sbt.compiler.AggressiveCompile $$ anonfun $ 4 $$ anonfun $ compileScala $ 1 $ 1.apply(AggressiveCompile.scala:71)
在sbt.compiler.AggressiveCompile.sbt $ compiler $ AggressiveCompile $$ timed(AggressiveCompile.scala:101)
在sbt.compiler.AggressiveCompile $$ anonfun $ 4.compileScala $ 1(AggressiveCompile.scala:70)中
在sbt.compiler.AggressiveCompile $$ anonfun $ 4.apply(AggressiveCompile.scala:88)
在sbt.compiler.AggressiveCompile $$ anonfun $ 4.apply(AggressiveCompile.scala:60)
在sbt.inc.IncrementalCompile $$ anonfun $ doCompile $ 1.apply(Compile.scala:24)
在sbt.inc.IncrementalCompile $$ anonfun $ doCompile $ 1.apply(Compile.scala:22)
在sbt.inc.Incremental $ .cycle(Incremental.scala:45)
在sbt.inc.Incremental $ .compile(Incremental.scala:29)
在sbt.inc.IncrementalCompile $ .apply(Compile.scala:20)
在sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:96)
在sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:44)
在sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:31)
在sbt.Compiler $ .apply(Compiler.scala:79)
在sbt.Defaults $$ anonfun $ compileTask $ 1.apply(Defaults.scala:572)
在sbt.Defaults $$ anonfun $ compileTask $ 1.apply(Defaults.scala:572)
在sbt.Scoped $$ anonfun $ hf2 $ 1.apply(Structure.scala:578)
在sbt.Scoped $$ anonfun $ hf2 $ 1.apply(Structure.scala:578)
在scala.Function1 $$ anonfun $ compose $ 1.apply(Function1.scala:49)
sbt.Scoped $ Reduced $$ anonfun $ combine $ 1 $ anonfun $ apply $ 12.apply(Structure.scala:311)
sbt.Scoped $ Reduced $$ anonfun $ combine $ 1 $ anonfun $ apply $ 12.apply(Structure.scala:311)
在sbt。$ tilde $ greater $$ anonfun $$ u2219 $ 1.apply(TypeFunctions.scala:41)
在sbt.std.Transform $$ anon $ 5.work(System.scala:71)
在sbt.Execute $$ anonfun $ submit $ 1 $$ anonfun $ apply $ 1.apply(Execute.scala:232)
在sbt.Execute $$ anonfun $ submit $ 1 $$ anonfun $ apply $ 1.apply(Execute.scala:232)
在sbt.ErrorHandling $ .wideConvert(ErrorHandling.scala:18)
在sbt.Execute.work(Execute.scala:238)
在sbt.Execute $$ anonfun $ submit $ 1.apply(Execute.scala:232)
在sbt.Execute $$ anonfun $ submit $ 1.apply(Execute.scala:232)
at sbt.ConcurrentRestrictions $$ anon $ 4 $$ anonfun $ 1.apply(ConcurrentRestrictions.scala:160)
在sbt.CompletionService $$ anon $ 2.call(CompletionService.scala:30)
在java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303)
在java.util.concurrent.FutureTask.run(FutureTask.java:138)
在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:439)
在java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:303)
在java.util.concurrent.FutureTask.run(FutureTask.java:138)
在java.util.concurrent.ThreadPoolExecutor $ Worker.runTask(ThreadPoolExecutor.java:895)
在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:918)
在java.lang.Thread.run(Thread.java:695)
[错误](测试:编译)scala.reflect.internal.MissingRequirementError:在编译器镜像中找不到对象scala.runtime。
[错误]总时间:39秒,完成于2014年4月1日下午4:08:27
进行干净测试103.37s用户3.60s系统224%cpu 47.737

在使用自制软件更新某些软件包后,最近突然开始发生这种情况,尽管我不确定这是原因,因为我卸载了homewbrew并开始使用其网站上的play zip软件包,只是遇到了同样的问题。

我尝试过的其他方法:

清除.sbt,.ivy,.m2目录
卸载/重新安装scala / play / java,使用play framework clean命令,清理存储库等。

参考方案

TL; DR我们所依赖的powermock.jar文件不是jar文件。

我能够在一个新的播放项目中运行“播放测试”,但是我的系统中没有更成熟的项目。因此,我决定删除文件,直到通过测试为止。我首先删除了所有的scala测试(我们将Java和Scala混合使用),并得到了更多信息:

[error] error: error reading /usr/local/Cellar/play/2.1.1/libexec/repository/cache/org.powermock/powermock-mockito-release-full/jars/powermock-mockito-release-full-1.5.jar; cannot read zip file

我看了一下jar文件:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <style type="text/css">
            html, body, #partner, iframe {
                height:100%;
                width:100%;
                margin:0;
                padding:0;
                border:0;
                outline:0;
                font-size:100%;
                vertical-align:baseline;
                background:transparent;
            }
            body {
                overflow:hidden;
            }
        </style>
        <meta content="NOW" name="expires">
        <meta content="index, follow, all" name="GOOGLEBOT">
        <meta content="index, follow, all" name="robots">
        <!-- Following Meta-Tag fixes scaling-issues on mobile devices -->
        <meta content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" name="viewport">
    </head>
    <body>
        <div id="partner"></div>
        <script type="text/javascript">
            document.write(
                    '<script type="text/javascript" language="JavaScript"'
                            + 'src="//sedoparking.com/frmpark/'
                            + window.location.host + '/'
                            + 'tierraexpired'
                            + '/park.js">'
                    + '<\/script>'
            );
        </script>
    </body>
</html>

我们依赖于powermock 1.5:

"org.powermock" % "powermock-mockito-release-full" % "1.5" % "test"

快速浏览一下powermock站点,似乎已弃用了powermock 1.5,也许它已被撤消。但是实际上我们是从Artifactory提供此特定文件的,无论出于何种原因,它都开始提供HTML。

不知道为什么它没有通过签名验证或给我们带来更多信息错误。

时髦的语言有?。语法来处理NullPointer异常,scala中是否有类似的东西? - java

假设我有来自查询字符串请求参数的String参数。如您所知,该参数可能丢失或在那里,但值是空字符串。用时髦的语言,我可以简单地做 List lst = words?.split(',') 如果单词为null,则lst为null,而不是抛出NPEScala中类似的快捷方式是什么?Option [String]在这里不是选项,因为单词是Str…

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

Java:BigInteger,如何通过OutputStream编写它 - java

我想将BigInteger写入文件。做这个的最好方式是什么。当然,我想从输入流中读取(使用程序,而不是人工)。我必须使用ObjectOutputStream还是有更好的方法?目的是使用尽可能少的字节。谢谢马丁 参考方案 Java序列化(ObjectOutputStream / ObjectInputStream)是将对象序列化为八位字节序列的一种通用方法。但…

Java-如何将此字符串转换为日期? - java

我从服务器收到此消息,我不明白T和Z的含义,2012-08-24T09:59:59Z将此字符串转换为Date对象的正确SimpleDateFormat模式是什么? java大神给出的解决方案 这是ISO 8601标准。您可以使用SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM…

Java:从类中查找项目名称 - java

仅通过类的实例,如何使用Java反射或类似方法查找项目名称?如果不是,项目名称(我真正想要的是)可以找到程序包名称吗? 参考方案 项目只是IDE使用的简单组织工具,因此项目名称不是类或JVM中包含的信息。要获取软件包,请使用Class#getPackage()。然后,可以调用Package#getName()将包作为您在代码的包声明中看到的String来获取…