gpt4 book ai didi

java - 在 Nashorn 中执行 javascript 时找不到文件异常

转载 作者:行者123 更新时间:2023-12-03 11:48:41 25 4
gpt4 key购买 nike

我是 nashorn 引擎的新手。在我的 java 代码中,我在 filereader 中指定了 javascript 路径,但它在运行时抛出 filenotfoundException。如果我将我的 javascript 放在桌面上并给出该位置,我的代码就可以工作。但是如果我把我的 javascript 放在项目中的文件夹之一中的函数不起作用,会抛出文件未找到异常。这是我的错误代码

engine.eval(new FileReader("res/nashorn1.js"));

这是我的工作代码

engine.eval(new FileReader("C:/Users/selva/Desktop/res/nashorn1.js"));

我正在使用java独立应用程序。我的代码

public class Nashorn1 {

public static void main(String[] args) throws Exception {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("C:/Users/selva/Desktop/res/nashorn1.js"));

Invocable invocable = (Invocable) engine;
Object result = invocable.invokeFunction("fun1", "Peter Parker");
System.out.println(result);
System.out.println(result.getClass());

invocable.invokeFunction("fun2", new Date());
invocable.invokeFunction("fun2", LocalDateTime.now());
invocable.invokeFunction("fun2", new Person());
}

}

nashorn1.js

var fun1 = function(name) {
print('Hi there from Javascript, ' + name);
return "greetings from javascript";
};

var fun2 = function (object) {
print("JS Class Definition: " + Object.prototype.toString.call(object));
};

任何帮助将不胜感激!!

最佳答案

这与 Nashorn 无关;这都是关于 Java 和文件的。

当您指定时:

new FileReader("res/nashorn1.js")

这被解释为相对路径,因此根据您当前的工作目录进行解析。如果执行程序时您当前的工作目录恰好是C:/Users/selva/Desktop,那么它就可以工作。 (尝试使用 cd\Users\selva\Desktop 或类似的东西;我的 DOS 很生锈,而且我手头没有 Windows。)

当您指定整个路径时,就会找到该文件。

[脚注:我通常对 Java API 规范印象深刻,因此非常惊讶 java.io.FileReader 文档根本没有关于如何解释字符串的信息。哎呀;我已经提交了一个错误,如果他们承认这一点,我将在此更新并给予热烈的赞扬。]

对于您的情况,很难理解“最佳”解决方案是什么,因为确切地说不存在“问题”;您只需要让 Java 知道实际上可以在哪里找到该脚本。如果您需要做更具体的事情,请发布后续内容。

关于java - 在 Nashorn 中执行 javascript 时找不到文件异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25931856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com