Ken*_*Ken 4 javascript java rhino classpath
我正在玩Rhino,我已经成功使用了stdlib中的Java类,但没有使用我编译的Java代码.
例如,这工作正常:
print(new java.util.Date());
Run Code Online (Sandbox Code Playgroud)
但是使用NanoHTTPD(单个.java文件,没有名称空间,相同的文件夹),我根本就没有运气:
js> new Packages.NanoHTTPD()
js: "<stdin>", line 4: uncaught JavaScript runtime exception: TypeError: [JavaPackage NanoHTTPD] is not a function, it is object.
at <stdin>:4
Run Code Online (Sandbox Code Playgroud)
我确信这很简单.我错过了什么?
编辑:我发布它是这样的:
$ CLASSPATH=. java -jar rhino.jar
Run Code Online (Sandbox Code Playgroud)
或这个:
$ java -classpath . -jar rhino.jar
Run Code Online (Sandbox Code Playgroud)
或者我将NanoHTTPD.java移动到文件夹"./nano"中,添加package nano;到文件顶部,编译它,然后替换为".".在上面的类路径分配中使用"nano".
无论我怎么做,从翻译中我看到:
js> java.lang.System.getProperty("java.class.path")
/Users/me/blah/rhino.jar
Run Code Online (Sandbox Code Playgroud)
你需要像这样运行Rhino:
java -cp /path/to/rhino/js.jar:. org.mozilla.javascript.tools.shell.Main
Run Code Online (Sandbox Code Playgroud)
这会将当前目录添加到类路径中.使用-jarclobbers类路径.(类路径分隔符取决于您的操作系统.)
然后试试
js> Packages.NanoHTTPD
[JavaClass NanoHTTPD]
Run Code Online (Sandbox Code Playgroud)
如果它说[JavaPackage NanoHTTPD],这意味着它没有找到该名称的类.
无论如何你都无法实例化NanoHTTPD,所以我猜你想尝试Packages.NanoHTTPD.main([])什么.