我们的一个脚本有以下行,在Ant中调用一个方法来获取提供者:
var provider = resource.as(org.apache.tools.ant.types.resources.FileProvider);
Run Code Online (Sandbox Code Playgroud)
自从更新到Java 8以来,现在失败并出现错误:
java.lang.ClassCastException: Cannot cast jdk.internal.dynalink.beans.StaticClass to java.lang.Class
at sun.invoke.util.ValueConversions.newClassCastException(ValueConversions.java:461)
at sun.invoke.util.ValueConversions.castReference(ValueConversions.java:456)
at jdk.nashorn.internal.scripts.Script$\^eval\_.getFileHack(<eval>:131)
at jdk.nashorn.internal.scripts.Script$\^eval\_.runScript(<eval>:207)
Run Code Online (Sandbox Code Playgroud)
我试图找出Nashorn文档中的变化,但不是特别清楚.使用我在记录的示例中看到的以下更改会产生相同的错误:
var provider = resource.as(Java.type("org.apache.tools.ant.types.resources.FileProvider"));
Run Code Online (Sandbox Code Playgroud)
如何将StaticClass转换为Java类以在此处传递它?
Att*_*edi 10
用途.class:
var provider = resource.as(org.apache.tools.ant.types.resources.FileProvider.class);
Run Code Online (Sandbox Code Playgroud)
要么
var provider = resource.as(Java.type("org.apache.tools.ant.types.resources.FileProvider").class);
Run Code Online (Sandbox Code Playgroud)
就像在Java中:-)
| 归档时间: |
|
| 查看次数: |
1413 次 |
| 最近记录: |