不幸的是,Nashorn已经被弃用了,因为有很多例子。
我们知道GraalVM可以编译和运行应用程序。我们不需要这个。
我们只想在java应用程序中运行一些javascript。加载一个javascript文件,然后定期对其调用方法,并让javascript调用java作为响应。javascript是一个引擎,我们需要能够在浏览器客户端或服务器上运行。
有没有人见过使用GraalVM在spring应用程序或更好的grails中运行js文件的方法?我们使用gradle。
明确地说,我们不想使用graalvm来编译我们的应用程序。我们只想要一个可以在现有应用程序中运行js的实用程序。
示例和留档在地面上很薄。似乎也没有任何gradle插件或选项来支持它。
还是我们应该坚持Nashorn?
根据文件,应该是这样的:
package graaltest;
import org.graalvm.polyglot.*;
public class GraalVMTest {
public static void main(String[] args) {
Context context = Context.create();
context.eval("js", "var test = Java.type('graaltest.GraalVMTest'); test.hello('World');");
}
public static void hello(String what) {
System.out.println("Hello "+what);
}
}
运行GraalVM JavaScript引擎的推荐方式是GraalVM,这并不奇怪。你似乎对格拉阿尔姆和格拉阿尔姆的原生形象有一些误解。GraalVM是一个功能齐全的JDK8,它确实支持java应用程序的提前编译,但并不强制要求这样做。您可以像使用任何其他JDK8一样使用GraalVM(例如指向GraalVM目录的点JAVA_HOME
)。你只需要得到多方面的支持,可能会有更好的表现。
如果您正在运行JDK11,请查看示例maven项目https://github.com/graalvm/graal-js-jdk11-maven-demo(如本文所述,通过标准JDK 11使用graalvm)
如果您在JDK8上运行并坚持不使用GraalVM,您的选择相当有限。您仍然可以使用GraalVM javascript引擎,但在解释器模式下只会导致更差的性能。我链接到的示例存储库在pom.xml
文件中有一个"jdk8"配置文件,它显示了如何在股票jdk8上运行。
在我的测试环境中,我想用java启动grails应用程序,不需要单独的tomcat实例。我通过调用 之后,我使用Java部署应用程序:
我不知道如何用GraalVM的SDK编译我的Java应用程序。我相信在使用GraalVMbinary时,默认情况下会将它们添加到类路径中。 我的hello world测试应用程序: 输出: 我使用的是用OpenJDK 11构建的GraalVM二进制文件: 当深入挖掘时,我发现这些类包含在其中。jmod档案位于:
问题内容: 我有一个看起来像这样的docker文件: 我需要在某些时候运行flask run来查看我在flask中创建的端点(在文件夹app下)。我该怎么做才能将此添加到此dockerfile? 我认为我还必须让flask运行其他应用程序,因为flask公开了其他应用程序正在收集的数据。我如何让flask调用其他应用程序并使其在后台运行? 问题答案: 我想你不想要那个入口点(也许你确实想要它,但是
我开始用Spring Boot学习微服务。我转到项目的root并运行命令: 它工作得很好,我可以在localhost:8080/[path]中使用我的endpoint。但是当我尝试使用run as->Spring Boot应用程序从IDE运行我的项目时。我得到这个错误:
问题内容: 我已经将应用程序升级到Grails 2.4.0,并且正在使用hibernate4插件。执行运行应用程序时,会使用内存数据库为每个域类生成以下错误示例。我已经在hibernate论坛上阅读了几则帖子,这些错误并不严重。它只是记录一个错误,因为它要删除的表尚不存在。 2014-Mai-24 13:25:26,788错误[localhost-startStop-1] org.hibernat
这是我尝试启动应用程序时遇到的错误: