最有尊严的开发者
我很难从lotus代理调用我自己的java类上的方法。
我的Java类简化如下所示
import lotus.domino.*;
public class MyClass{
/* .. omitted constructor and other methods .. */
public void myMethod(Document doc){
/* ... do things with the document object ...*/
}
}现在这个类包含在适当的use语句中,我可以在lotus中的类对象上迭代类方法,以获得所需参数的签名。
但是当我试图调用这个方法时,我会得到一个LS2J: Parameter mismatch calling Method myMethod
我尝试过在JavaObject上使用点符号(不,我不使用Mac;)和ADT。
Dim doc as NotesDocument
Dim jSession As JavaSession
Dim jClass As JavaClass
Dim jObject As JavaObject
...
Set jSession = New JavaSession()
Set jClass = jSession.Getclass("MyClass")
Set jObject = jClass.Createobject()
Call jObject.myMethod(doc)和分别
Dim jMethod as JavaMethod
...
Set jMethod = jClass.Getmethod("myMethod", "(Llotus/domino/Document;)V")
tmp = jMethod.Invoke(jObject,doc)此外,我还添加了错误处理(OnError ..)打印出任何JavaError (+ stacktrace)的结果,但是结果都是空的,因此没有进一步的线索。
我使用的是设计版本9.0
有什么想法/指点/陷阱吗?快让我秃顶了。
发布于 2014-05-28 15:02:20
您正在使用正确的方法调用Java方法,但不能将Notes后端对象作为参数传递。
例如,您可以解析带有文档通用id的字符串,然后在Java方法中使用通用id查找文档。
或者,将Lotusscript逻辑迁移到Java :-)
发布于 2014-05-28 13:42:37
也许你不需要CreateObject..。
我就是这样做的:
Dim jSession As New JavaSession()
Dim jClass As JavaClass()
Set jClass = jSession.GetClass("MyClass")
If jClass.myMethod(doc) Then添加完整示例
Java class:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
public class GetFileFromUrl {
public static boolean getFileFromUrl(String imageUrl, String filePath) {
try {
URL url = new URL(imageUrl);
InputStream is = url.openStream();
OutputStream os = new FileOutputStream(filePath);
byte[] b = new byte[2048];
int length;
while ((length = is.read(b)) != -1) {
os.write(b, 0, length);
}
is.close();
os.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}LotusScript:
UseLSX "*javacon"
Use "GetFileFromUrl"
Private Function GetFileFromUrl(url As String, outputPath As String) As Boolean
Dim jSession As New JavaSession
Dim jClass As JavaClass
Set jClass = jSession.GetClass("GetFileFromUrl")
If jClass.getFileFromUrl(url, outputPath) Then
GetFileFromUrl = True
End If
End Functionhttps://stackoverflow.com/questions/23912808
复制相似问题