使用 Scala 符号文字会导致 NoSuchMethod

2023-11-30

我最近开始使用 Scala。我在其中编写了一个 DSL,可用于描述中的处理管道medici。在我的 DSL 中,我使用符号来表示锚点,它可用于在管道中放置叉子(或 T 恤,如果您愿意)。这是一个正确运行的小示例程序:

object Test extends PipelineBuilder {
    connector("TCP") / Map("tcpProtocol" -> new DirectProtocol())
    "tcp://localhost:4858" --> "ByteToStringProcessor" --> Symbol("hello")
    "stdio://in?promptMessage=enter name:%20" --> Symbol("hello")
    Symbol("hello") --> "SayHello" / Map("prefix" -> "\n\t")  --> "stdio://out"
}

由于某种原因,当我在程序中使用符号文字时,我在运行时收到 NoSuchMethod 异常:

java.lang.NoSuchMethodError: scala.Symbol.intern()Lscala/Symbol;
        at gov.pnnl.mif.scaladsl.Test$.<init>(Test.scala:7)
        at gov.pnnl.mif.scaladsl.Test$.<clinit>(Test.scala)
        at gov.pnnl.mif.scaladsl.Test.main(Test.scala)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at scala.tools.nsc.ObjectRunner$$anonfun$run$1.apply(ObjectRunner.scala:75)
        at scala.tools.nsc.ObjectRunner$.withContextClassLoader(ObjectRunner.scala:49)
        at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:74)
        at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:154)
        at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)

无论符号如何使用,都会发生这种情况。具体来说,我尝试在管道中使用该符号,并以简单的方式使用println('foo)陈述。

问题:什么可能导致符号文字的存在导致 NoSuchMethodError?在我的 DSL 中,我使用一个隐式函数将符号转换为 Anchor 类的实例,如下所示:

    implicit def makeAnchor(a: Symbol):Anchor = anchor(a)

遗憾的是,我对 Scala 的理解还很薄弱,以至于我无法想象为什么这会导致我的 NoSuchMethodError。


最可能的解释是,您使用的 Scala 版本与运行时类路径上的版本不同。

检查 Scala 的运行时版本

将以下内容添加到您的 main() 方法中:

println(classOf[scala.Symbol].getProtectionDomain.getCodeSource)

这将告诉您从哪里加载 Scala 库,例如:

(文件:/Users/jason/usr/scala-2.8.0.RC2/lib/scala-library.jar )

检查Scala的编译时版本

我不知道你是如何调用scalac的。假设它是从命令行运行的scalac -version.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Scala 符号文字会导致 NoSuchMethod 的相关文章

  • Joda Time 类没有任何构造函数...为什么?我做错了什么?

    显然 Eclipse 上的 Scala 试图让我相信DateTime Period DateMidnightJoda Time 中的许多其他类没有任何构造函数 考虑到它们的文档显示了构造函数和许多方法 这很奇怪 我唯一可以访问的是静态方法
  • 清理 IntelliJ 中构建的 Play 框架

    我有一个拼写错误conf routes文件导致 Play Framework 生成错误命名的类 重建项目并运行Invalidate Caches并没有解决 IntelliJ 中的问题 当我手动运行时重新生成了不正确的类文件play clea
  • 如何以最佳方式传递元组参数?

    如何以最佳方式传递元组参数 Example def foo Int Int def bar a Int b Int 现在我想传递的输出foo to bar 这可以通过以下方式实现 val fooResult foo bar fooResul
  • 如何将 scala 列表转换为 javascript 数组?

    有更简单的方法吗 document ready function var jsArray if scalaList null for id lt scalaList jsArray push id 很简单 如下所示 import play
  • 通用 scala 函数,其输入是变量数量的函数

    我想定义一个函数f需要另一个函数g 我们需要g采取采取n双打 对于某些固定n 并返回一个 Double 函数调用f g 应该返回具体值n 例如 f Math max 2因为 Math sin 具有类型 Double Double gt Do
  • 减少/折叠幺半群列表,但减少器返回任一

    我发现自己遇到过几次这样的情况 我有一个减速器 组合 fn 如下所示 def combiner a String b String Either String String a b asRight String 它是一个虚拟实现 但 fn
  • 如何在 Apache Spark 中通过 DStream 使用特征提取

    我有通过 DStream 从 Kafka 到达的数据 我想进行特征提取以获得一些关键词 我不想等待所有数据的到达 因为它是可能永远不会结束的连续流 所以我希望以块的形式执行提取 如果准确性会受到一点影响 对我来说并不重要 到目前为止 我整理
  • 多个 scala 库导致 intellij 出错?

    我正在使用 intellij 14 和 scala 2 11 6 使用 homebrew 安装并使用符号链接 ln s usr local Cellar scala 2 11 6 libexec src usr local Cellar s
  • Scala 的代码覆盖率工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • HashPartitioner 是如何工作的?

    我阅读了文档HashPartitioner http spark apache org docs 1 3 1 api java index html org apache spark HashPartitioner html 不幸的是 除了
  • 模拟 BlazeClientBuilder[IO] 以返回模拟客户端[IO]

    我正在使用BlazeClientBuilder IO resource方法得到Client IO 现在 我想模拟客户端进行单元测试 但不知道该怎么做 有没有一个好的方法来嘲笑这个 我会怎么做 class ExternalCall val r
  • grails 中的 log4j:如何登录文件?

    我的 grails config groovy 中有这个 log4j 配置 log4j error org codehaus groovy grails web servlet controllers org codehaus groovy
  • 高效序列化案例类

    对于我正在工作的图书馆 我需要提供一个高效 便捷 typesafe序列化 scala 类的方法 理想的情况是用户可以创建一个案例类 并且只要所有成员都是可序列化的 它似乎也应该如此 我准确地知道序列化和反序列化阶段的类型 因此不需要 也不能
  • 可选择将项目添加到 Scala 映射

    我正在寻找这个问题的惯用解决方案 我正在构建一个valScala 不可变 Map 并希望有选择地添加一项或多项 val aMap Map key1 gt value1 key2 gt value2 if condition key3 gt
  • 在 Spark MLlib 上使用 Java 中的 Breeze

    在尝试从Java使用MLlib时 使用微风矩阵运算的正确方法是什么 例如scala 中的乘法很简单 matrix vector 相应的功能在Java中是如何表达的 有一些方法 例如 colon times 可以通过正确的方式调用 breez
  • 在scala 2.13中,为什么有时无法显式调用类型类?

    这是 Shapeless 2 3 3 中的一个简单示例 val book author gt gt Benjamin Pierce title gt gt Types and Programming Languages id gt gt 2
  • 如何通过 javascript 和 ajax 调用 Scala 中的方法?

    我不知道我的标题是否有点误导 但这是我真正需要帮助的 我正在获取这个网址 get fb login fbEmail function data console log data 这是我的路线 GET fb login email prese
  • Spark 2.2 无法将 df 写入 parquet

    我正在构建一个聚类算法 我需要存储模型以供将来加载 我有一个具有以下架构的数据框 val schema new StructType add StructField uniqueId LongType add StructField tim
  • XML 创建 - 错误:带有替代方案的重载方法构造函数 UnprefixedAttribute

    scala gt val count 7 count Int 7 将其放入 XML 属性中会出现错误 scala gt val x
  • Scala 使用的 Redis 客户端库建议

    我正在计划使用 Scala 中的 Redis 实例进行一些工作 并正在寻找有关使用哪些客户端库的建议 理想情况下 如果存在一个好的库 我希望有一个为 Scala 而不是 Java 设计的库 但如果现在这是更好的方法 那么仅使用 Java 客

随机推荐

  • 合并 2 个具有不同列名的数据框

    在 R 中 我有 2 个数据框 它们都有不同的列名称 我想根据列号组合每个数据框的行 我的数据框如下 gt d1 X 0 52 V2 X 0 52 V4 1 ABT 700 2 AMD 9600 3 AMG 600 4 AGCO 800 g
  • 如何将 Eigen::Matrix 映射到 std::vector

    例如 如果我有一个Eigen MatrixXd大小为 10 列和 3 行 我如何将其别名为std vector的 10 个元素Eigen Vector3d 当我说别名时 我的意思是使用相同的内存块而不进行复制 我知道我可以通过以下方式进行反
  • 如何使用 Firebase 云消息传递

    我找不到任何有关新版本的文档 版本7和版本6有大量文档 而版本9几乎不存在 不仅是我 大多数人都找不到 我只是想向后台发送简单的通知 如果有人分享有关新版本的文档 我将非常高兴 或者我应该使用旧版本 我想您知道如何将 firebase 添加
  • 在 C# 中将字符串转换为枚举标记[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 C 中将字符串转换为枚举 如何在 C 中将字符串 文本 转换 强制转换 为 Enum 标记值 你可以这样做 MyEnum oMyEnum MyEnum Enum Parse typeof My
  • 使用 VBA 获取在 VBA 中使用的唯一值?

    我目前会使用类似的东西与范围 单元格或类似的许多不同的方式相同的基本原理 Range A1 Range A1 End xlDown AdvancedFilter Action xlFilterCopy CopyToRange Range I
  • 尝试为 Haskell 中的函数创建有效的算法

    我正在寻找一种有效的多项式时间解决方案来解决以下问题 实现一个递归函数节点 x y 来计算数字三角形中的第 x y 个数字 定义为 g x y 0 if x gt y 1 if x y 0 0 sum of all incoming pat
  • 使用 VS 2015 Update 2 配置 tslint

    我无法让 tslint 在 Visual Studio 2015 中正常工作 我应该明确指出 我安装了更新 2 我有 Web Essentials 但它声称它不再包含 linters 我没有网络分析器 如果这很重要的话 这是一个 ASP N
  • 有没有办法在 Gradle KTS 中实例化 KTS 脚本引擎?

    我想在我的项目构建过程中使用 3d party 库 库方法需要 ScriptEngine 当我尝试实例化它时 出现错误 java lang IllegalArgumentException Unable to construct scrip
  • Mongoose findOneAndUpdate:更新对象数组中的对象

    我有与此线程中描述的完全相同的问题 因此有类似的标题 Mongoose findOneAndUpdate 更新对象数组中的对象 给定这个模型 const SavedFoodsSchema new Schema user type Schem
  • 为什么我的组件没有包装在 Swing 的 FlowLayout 中?

    为什么我的组件没有使用 FlowLayout 包装在这个 JPanel 中 它们只是跑出屏幕并且仅部分可见 JPanel panel new JPanel new FlowLayout panel add new JLabel TEST r
  • 如何在nodejs中使用typescript/flow而不编译它

    有人可以给我一些建议或链接来讨论我是否应该为后端捆绑 JS 我尝试用这个标题 和类似的词 搜索谷歌 但找不到任何有用的链接 只是想知道 假设我正在使用最新的 Node JS es6 ready 我应该捆绑 编译 JS 吗 如果没有 我该如何
  • 循环 Observable 数据,推送到数组,并显示数组打字稿的所有结果

    我如何循环遍历我作为 Observable 订阅的数据 将其推送到数组 并显示数组的全部数据 我目前的代码仅显示每个 页面 的数据 而不是所有页面 我之所以要这样做 是因为我想制作无限滚动 谢谢你 成分 this storiesServic
  • 来自资源字符串的 Toast.makeText

    我有一个名为 MyPrimaryClass 的类 该类有一个按钮 按下时会创建一个类为 myClassForResult 的 Intent 我用它来启动它 startActivityForResult myIntentOfMyClassFo
  • Python:如果 DataFrame 之间的其他值匹配,则对 DataFrame 中的值求和

    我有两个不同长度的数据帧 如下所示 数据框A FirstName LastName Adam Smith John Johnson 数据框B First Last Value Adam Smith 1 2 Adam Smith 1 5 Ad
  • 从实体框架实体获取列数据类型

    使用实体框架 5 首先使用数据库 是否可以 在运行时 获取实体属性所代表的数据库列的数据类型 如果更容易的话 net 类型也可以正常工作 IEnumerable
  • android渲染使用CPU而不是GPU?

    很奇怪的是 在 systrace 工具中 当我看到 SurfaceFlinger 执行绘图命令和窗口合成时 它是在 CPU 上运行的 而不是在 GPU 上运行的 但根据 Romain Guy 的 google 演讲 他们表示绘图命令的组合和
  • PHP 致命错误:使用 laravel4 找不到类“PDO”

    一小时后尝试解决这个问题我失败了 我的错误消息是 Generating autoload files PHP Fatal error Class PDO not found in usr share nginx html laravel a
  • C 函数局部变量的作用域

    当我开始用 C 语言编程时 我就听说过以下场景 尝试从外部访问函数局部变量将导致错误 或垃圾值 由于当我们从函数返回时堆栈被清除 但我的下面的代码示例打印的值为 50 我正在使用最新的 GCC 编译器编译代码 include
  • 如何根据下面的示例从 SQL Server 检索数据?

    实际上我在这里发布了与此相关的类似问题如何按照下面的要求从 SQL Server 检索数据 现在我需要对此进行一些更改 因此请在提出建议之前查看此内容 我有一张这样的桌子 CustName Country RecordedTime Alex
  • 使用 Scala 符号文字会导致 NoSuchMethod

    我最近开始使用 Scala 我在其中编写了一个 DSL 可用于描述中的处理管道medici 在我的 DSL 中 我使用符号来表示锚点 它可用于在管道中放置叉子 或 T 恤 如果您愿意 这是一个正确运行的小示例程序 object Test e