问题标签 [janino]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1504 浏览

java - 没有为实际参数“int”找到适用的构造函数/方法,但匹配的候选者确实存在

我想在 Spark-SQL 生成的 java 代码中添加一些代码。因此,我创建了一个具有“Employee”类的 jar 文件,并在文件中手动插入“Employee e = new Employee(some integer)”:sql/core/src/main/scala/org/apache/spark/sql/execution /WholeStageCodegenExec.scala。调用 spark-shell 时,我执行了“spark-shell --jars /path/to/myJar.jar”。但是,当我运行查询时,它会报告此错误:错误代码生成器:编译失败:org.codehaus.commons.compiler.CompileException:文件'generated.java',第 21 行,第 18 列:找不到适用的构造函数/方法实际参数“int”;候选人是:“Employee()”、“Employee(int)”、“Employee(java.lang.String)”

我在网上找到的大多数类似问题都是因为参数类型不匹配,但是,我确实有 Employee(int) 构造函数,正如您在此处看到的那样,为什么 Janino 仍然抱怨它?

我的员工示例非常简单:

修改后的生成代码也很简单:

真的很感谢你的帮助!!!

0 投票
0 回答
338 浏览

java-8 - 在 Java 8 上将规则名称作为类编译流口水规则(v5.0.1)时出现奇怪的 java.lang.ClassNotFoundException

试图让流口水运行 java8 jvm(从 Java6 升级)。然而,编译失败了,目标进一步推进。

做了一些有帮助的事情: Ecj 编译器:更新为 'org.eclipse.jdt.core.compiler:ecj:4.5.1' Mvel:使用更新的 mvel2-2.1.3.Final.jar

此外,添加 org.codehaus.janino:janino:jar:2.5.16 来编译依赖项以按照此https://copyrightdev.tumblr.com/post/146315831773/getting-drools-5x-to-operate-使用 janino 编译器Smooth-with-java-8博客。

但是,我认为这个当前的错误很奇怪,因为不能有一个名为“ItemManagement.Rule_mobile_Bundle_MOBILE_500MB_0ConsequenceInvoker”的类。查看 ItemManagement.drl 文件,这类似于以下规则名称:

规则'mobile Bundle MOBILE 500MB'

错误消息很奇怪,因为它需要一个名为规则的类。有人有节省时间的指针吗???感谢任何帮助。

0 投票
0 回答
632 浏览

apache-calcite - 找不到 org.codehaus.commons.compiler.properties 资源

我创建了一个 Maven 项目,其中包含对 Calcite JDBC 驱动程序的依赖项,以及 Calcite CSV 适配器的源代码。

当我从 JUnit 测试运行时,我可以使用 SQL 查询一些 CSV 文件。很酷!

但我无法让 JAR 在 SQL Workbench/J 中工作。日志文件有这个:

SQL Workbench/J 连接成功,我可以在 UI 中看到 CSV“表”列表。但是当我尝试查询它们时,我得到了上述错误。

我找到了一个有类似问题的人的链接,但没有看到解决方案。

https://community.jaspersoft.com/questions/1035211/apache-calcite-jdbc-driver-jaspersoft

此外,这是似乎引发错误的代码:

据我所知,org.codehaus.commons.compiler.properties在 SQL Workbench/J 下运行时找不到该资源,但由于某种原因,它可以在我的代码中运行。

如果我解压缩 JAR 文件,我会org.codehaus.commons.compiler.properties在目录结构中看到,所以不确定为什么找不到它。

还有其他人遇到这个问题吗?

谢谢你的帮助。

0 投票
0 回答
749 浏览

java - Spring Boot 应用程序不以应用程序 lib 文件夹中的 logback EvaluatorFilter 和 Janino 库启动

我在 tomcat 中部署了一个基于 spring-boot 的应用程序。它使用 logback-classic 进行日志记录。logback.xml 保存在外部 $TOMCAT_HOME/conf 文件夹中,并且 logback.xml 使用来自配置属性文件的 logging.config 引用,该文件也位于同一位置。

最近我们添加了以下过滤器来过滤掉一些日志

上面的过滤器需要下面的库

当我们构建和部署应用程序 janino 库时,下载到应用程序 lib 文件夹中,我们检查它是否存在。但是当我们启动应用程序时,虽然tomcat启动成功,但应用程序并没有部署。如果我们尝试使用浏览器访问应用程序,也不会显示任何日志,它会显示 504 bad gateway。我们需要一个解决方案,请帮助我们。

我们在 tomcat lib 文件夹中复制了 Janino 库,它可以工作。但我们不想那样做。logback-classic 和 logback-core jar 也存在于应用程序 lib 文件夹中,在 tomcat webapps 中。

除了应用程序之外,我们应该从日志中的启动消息开始。但是我们没有看到,应用程序在调用时也没有响应。

0 投票
1 回答
369 浏览

java - 如何在 Janino 脚本中表示值列表

我正在使用 Janino 评估脚本,但我不知道如何表示脚本中的值列表

我需要评估 containsAll 脚本,例如:attributeA.containsAll([3,5])

我尝试过使用 [] 和 Arrays.asList,但编译器要么说:“org.codehaus.commons.compiler.CompileException:第 1 行,第 25 列:意外的令牌“[”在主目录中”,要么说:org.codehaus。 commons.compiler.CompileException:第 1 行,第 32 列:未知变量或类型“数组”

我希望输出为 false/true,但会抛出 org.codehaus.commons.compiler.CompileException

0 投票
0 回答
194 浏览

scala - 带有 Spark 2.2.1 的 Scala .par 函数给出 Janino 编译错误

我有一些如下代码。

当我运行此代码时,它给出以下错误。但它在 IntelliJ 中工作

并抛出奇怪的代码错误

请帮助我。

0 投票
0 回答
95 浏览

java - 使用 JPMS 模块时 ToolProvider.getSystemJavaCompiler() 可以访问内存源文件中生成的运行时吗?

我开发了一个应用程序,它在运行时从外部源生成 Java 源代码。生成的源代码实现了一个位于 say 中的接口,org.foo并且还调用了位于org.foo. 应用程序将生成的 Java 源代码编译为特定的包,例如org.foo.generated. 提供的编译器ToolProvider.getSystemJavaCompiler()使用 找到源文件ForwardingJavaFileManager,编译源文件并且应用程序能够运行它们。

现在我已经在 J​​PMS 模块中拆分了我的应用程序,编译器抱怨它找不到org.foo由生成的源代码实现的接口所在的包。org.foo我从与生成代码所在的同一模块 () 中调用编译器。错误消息如下所示:

包 org.foo 不存在

ForwardingFileManager通过向查找模块添加一些方法来更改我的方法,如此所述。似乎驻留在java.compiler模块中的编译器无法访问该org.foo模块。所以,我补充说

--add-reads java.compiler=org.foo

到命令行,但这并没有改变任何东西。有什么线索吗?有人将运行时生成的源文件和 JPMS 与 Janino 而不是 ToolProvider 编译器结合起来有什么积极的经验吗?

以下是评论中要求的最小可重现示例。也可以从 github 检索源文件:

我得到以下没有module-info.java 的输出:

我使用module-info.java得到以下输出:

Eclipse 使用的命令行。 没有module-info.java:

使用模块信息.java:

使用的文件:

模块信息.java

主.java

IGreeter.java

JavaSourceFromString.java

0 投票
0 回答
248 浏览

java - janino 编译 Java 代码抛出“找不到类异常”

背景

我使用squirrel状态机并希望动态生成其相关类(状态、事件、上下文等)(状态可能会改变)

我尝试在 Springboot 应用程序启动后生成和编译 Java 代码。有四个文件A,B,C,D。

A,B,C 是简单的 java bean,D 扩展外部 lib 类。

示例代码如下所示:

它在 IDE(Intellij IDEA)中运行良好,但当我使用 command 运行它时不起作用java -jar。异常消息是

使用的版本和依赖项:

  • 1.8.0_202IDE 和外部的Java
  • 弹簧靴Greenwich.RELEASE

janino 依赖

Maven构建输出

此外,我还尝试了 OpenHFT/Java-Runtime-Compiler,在 IDE 中运行良好,但也无法运行java -jar:(

我搜索了许多与我相似的问题,但没有一个适合我的答案。也许我以错误的方式使用 janino,但我不知道如何解决。

非常感谢任何回复。

谢谢你,张

0 投票
1 回答
230 浏览

java - 在 Janino 中从字符串编译 Lambda 表达式

我正在尝试使用 Janino 从字符串编译一个类。该类在函数内包含一个 lambda 表达式,但它似乎无法识别引用运算符“->”和“::”。

我得到一个 CompileException 线程“主”org.codehaus.commons.compiler.CompileException 中的完整股权跟踪异常:第 1 行,第 346 列:主中的意外令牌“>”

下面是我正在使用的代码,

0 投票
0 回答
131 浏览

java - 使用 Maven 使 Janino 的 2 个版本一起用于 Junit 测试

我正在开发一个内部使用 Drools 的 spark 程序。代码工作正常。现在,我正在编写测试用例来测试 drools 代码。由于这个错误https://issues.redhat.com/browse/DROOLS-329,我不得不添加依赖项

然后是 jacoco 测试的 JVM 参数

添加 Spark 测试用例后开始失败,因为它们依赖于

因此,我在 POM 中注释掉了 Drools 测试和 2.5.16 janino 依赖项。现在 Spark 代码工作正常。我们如何确保 Janino 2.5.16 和 Janino 3.0.8 在 Maven 测试构建期间共存,这样 Drools 测试和 Spark 测试都通过了?

这是我正在使用的 Drools 代码

这是 Drools 依赖项

对于 Janino 2.5.16,Spark 不高兴会抛出此异常

如果我不添加 Janino 2.5.16 依赖项,我会收到以下测试错误