显然,java没有';Linux和Windows没有相同的nashorn.jar

显然,java没有';Linux和Windows没有相同的nashorn.jar,java,java-8,nashorn,Java,Java 8,Nashorn,我正在尝试在linux中从windows配置我的工作区 此代码在windows中正常运行: jdk.nashorn.internal.parser.JSONParser p = new jdk.nashorn.internal.parser.JSONParser(s, null); 在linux下获取以下错误: 类JSONParser中的构造函数JSONParser不能应用于不同的类型 当我看Linux下的源代码和Windows下的源代码时,我清楚地看到同一个类是不同的 有人知道这是为什么吗?

我正在尝试在linux中从windows配置我的工作区

此代码在windows中正常运行:

jdk.nashorn.internal.parser.JSONParser p = new jdk.nashorn.internal.parser.JSONParser(s, null);
在linux下获取以下错误:

类JSONParser中的构造函数JSONParser不能应用于不同的类型

当我看Linux下的源代码和Windows下的源代码时,我清楚地看到同一个类是不同的


有人知道这是为什么吗?如果是这样的话,WORA原则在这里就不适用了,这让我很困惑。

在不同用户的提示下,特别是@FedericoklezCulloca,我成功地解决了我的问题。我想在下面陈述以下几点:

  • 只使用JavaAPI中的“公开”接口,避免使用受限接口
  • 我必须在linux中获得完全相同版本的JDK(当然是同一个供应商)。比它的工作

  • 您不应该像那样直接使用内部类。“WORA原则在这里不适用”这是针对语言用户的,而不是针对内部JDK的,您需要JS运行时吗?如果您只需要获得一个JSON解析器,那么有很多选择。这些是不同的JDK/JRE版本(我不确定您看到的两者之间的区别可能很小,也可能没有)。此外,他们是否来自同一家供应商(即,都来自oracle或都来自azul或…)互联网上似乎充斥着教程,教那些毫无戒心的穷人使用
    jdk.nashorn.internal.parser.JSONParser
    解析JSON。您应该切换到更合适的解析器,并将Nashorn留给脚本引擎。