Java 在数组类[]的声明中找不到符号
我正在尝试从.jar调用方法 但当我想为getDeclaredMethod声明参数数组时,我在上遇到了一个错误“找不到符号” 整体方法Java 在数组类[]的声明中找不到符号,java,Java,我正在尝试从.jar调用方法 但当我想为getDeclaredMethod声明参数数组时,我在上遇到了一个错误“找不到符号” 整体方法 public void CallCloseWindow(String title){ //export dll InputStream in = staticapi.class.getResourceAsStream("CloseWindow.dll"); File fileOut = new File(Sys
public void CallCloseWindow(String title){
//export dll
InputStream in = staticapi.class.getResourceAsStream("CloseWindow.dll");
File fileOut = new File(System.getProperty("C:\\Java\\CloseWindow.dll"));
OutputStream out = new FileOutputStream(fileOut);
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
in.close();
out.close();
//call from jar class
Class[] params = new Class[]{ String };
Object[] parms = new Object[] { new String(title) };
URL url=new URL("jar:file:/callapi.jar/");
URLClassLoader ucl = new URLClassLoader(new URL[] { url });
Class obj = Class.forName("callapi.callapi", true, ucl);
Method m = obj.getDeclaredMethod("CloseWindow",params);
Object instance = obj.newInstance();
Object result = m.invoke(instance,parms);
}
有什么问题吗?String.TYPE也不起作用尝试使用
Class[]params=newclass[]{String.Class}代码>尝试使用Class[]params=newclass[]{String.Class}代码>尝试:
Class[] params = new Class[]{ String.class };
尝试:
正如其他人指出的,您只是错过了.class
。在声明时初始化数组时无需调用new
,不过:
Class[] params = { String.class };
应该可以。(只有在以后重新初始化数组,或者例如创建匿名数组时,才需要new
)
实际上,您根本不需要创建参数
数组。因为Class.getDeclaredMethods
是一种您可以直接执行的方法
Method m = obj.getDeclaredMethod("CloseWindow", String.class);
\__________/
|
this will be transformed to a Class[] on the fly by the constructor
正如其他人指出的,您只是错过了.class
。在声明时初始化数组时无需调用new
,不过:
Class[] params = { String.class };
应该可以。(只有在以后重新初始化数组,或者例如创建匿名数组时,才需要new
)
实际上,您根本不需要创建参数
数组。因为Class.getDeclaredMethods
是一种您可以直接执行的方法
Method m = obj.getDeclaredMethod("CloseWindow", String.class);
\__________/
|
this will be transformed to a Class[] on the fly by the constructor
这是Java?那是什么样的构造-newclass[]{String.Class}
是的,它是Java,你正在用一个元素(String.Class)构造一个类数组。@Adel:这是完全标准的Java(但是你引用的位不完整,没有new
),没有任何意义。@Fido-非常感谢你,这非常强大。@aix-修复了它,非常感谢!这是Java?那是什么样的构造-newclass[]{String.Class}
是的,它是Java,你正在用一个元素(String.Class)构造一个类数组。@Adel:这是完全标准的Java(但是你引用的位不完整,没有new
),没有任何意义。@Fido-非常感谢你,这非常强大。@aix-修复了它,非常感谢!