如何在LS2J中传递另一个类的参数中的对象



我正在尝试将java类(bean)的对象传递给另一个具有LS2J的类。

问题是返回一个错误:

LS2J错误:抛出java.lang.ClassNotFoundException:com.pasquier.DTO.WS.LogWSDTO

我不知道为什么

我有一个类bean,通常有getter和setter。我想把这个类的实例传递给另一个。

My class in Lotus LS2J:

Class LogWebService
    sessionJava As JAVASESSION      
    classJava As JAVACLASS
    objectJava As JAVAOBJECT        
    methodJava As JAVAMETHOD
    Public Sub New()
        Set sessionJava = New JAVASESSION
        Set classJava = sessionJava.GetClass("com.pasquier.launcher/LogWebService")
        Set objectJava = classJava.CreateObject     
    End Sub 
    Public Sub setLog(logDTO As LogWSDTO)
        Set methodJava = classJava.GetMethod("setLog","(Lcom/pasquier/DTO/WS/LogWSDTO;)V")      
             objectJava.setLog(logDTO)      
    End Sub 
End Class

是setLog方法崩溃了

我在代码中调用它:

Class LogGetAllDocumentsDAO
    Private ilog As LogWebService 
    Private logDTO As LogWSDTO
    Private docDTO As LogGetAllDocumentsDTO
    Public Sub New(logWSparam As LogWSDTO, docDTOparam As LogGetAllDocumentsDTO)
        Set Me.logDTO = logWSparam
        Set Me.docDTO = docDTOparam     
    End Sub 

    Public Sub appelLog()           
        Set ilog = New LogWebService()
        ' error: LS2J Error: Threw java.lang.ClassNotFoundException: com.pasquier.DTO.WS.LogWSDTO
        Call ilog.setLog(logDTO)

    End Sub 

一个想法?

我有一个类LogDTO与LogWebService在同一个库。

Class LogWSDTO
sessionJava As JAVASESSION      
classJava As JAVACLASS
objectJava As JAVAOBJECT        
methodJava As JAVAMETHOD

Public Sub New()
    Set sessionJava = New JAVASESSION
    Set classJava = sessionJava.GetClass("com.pasquier.DTO.WS/LogWSDTO")
    Set objectJava = classJava.CreateObject     
End Sub

如果我理解,我不能传递logDTO:

Set Me.logDTO = logWSparam

是那个吗?但我该怎么做??


我试过了,但是没有用。

我在LS2J中添加了一个getObjet方法(不只是在lotus上的java中)

Class LogWSDTO
sessionJava As JAVASESSION      
classJava As JAVACLASS
objectJava As JAVAOBJECT        
methodJava As JAVAMETHOD

Public Sub New()
    Set sessionJava = New JAVASESSION
    Set classJava = sessionJava.GetClass("com.pasquier.DTO.WS/LogWSDTO")
    Set objectJava = classJava.CreateObject     
End Sub

Public Function getJavaObject()
    Set getJavaObject = objectJava      
End Function

我试着在我的程序中调用它:

Class LogGetAllDocumentsDAO
Private ilog As LogWebService 
Private logDTO As LogWSDTO
Private docDTO As LogGetAllDocumentsDTO
Public Sub New(logWSparam As LogWSDTO, docDTOparam As LogGetAllDocumentsDTO)        
    Set Me.logDTO = logWSparam
    Set Me.docDTO = docDTOparam     
End Sub 

Public Sub appelLog()           
    Call ajouterParam()         
    Set ilog = New LogWebService()      
    Call ilog.setLog(logDTO.getJavaObject())
End Sub 

i不能保存此更改:它返回:

"type mismatch on : GETJAVAOBJECT"


所以我尝试在LogWebService的java类中添加方法。and i try in LS2J:

Public Function getJavaObject()         
    Set methodJava = classJava.GetMethod("getJavaObject","()Lcom/pasquier/DTO/WS/LogWSDTO;")        
    getJavaObject = objectJava.getJavaObject()  
End Function

call with:

Public Sub appelLog()           
    Set ilog = New LogWebService()          
    Set logDTO = logDTO.getJavaObject
    Call ilog.setLog(logDTO)

不工作,同样的信息,我哭了!!

objectJava.setLog(logDTO) - logDTO必须是由LS2J生成的Java对象。它不能与LotusScript类对象一起工作。

向LotusScript类LogWSDTO添加getJavaObject()方法,该方法返回LS2J Java对象objectJava。然后这样使用:

objectJava.setLog(logDTO.getJavaObject())

这是一个工作示例:

LotusScript代理:

Option Declare
UseLSX "*javacon"
Use "AandB"
Class LogWSDTO
    sessionJava As JAVASESSION      
    classJava As JAVACLASS
    objectJava As JAVAOBJECT        
    Public Sub New()
        Set sessionJava = New JAVASESSION
        Set classJava = sessionJava.GetClass("de.leonso.test/B")
        Set objectJava = classJava.CreateObject     
    End Sub
    Public Function getJavaObject()
        Set getJavaObject = objectJava      
    End Function
End Class
Sub Initialize
    Dim sessionJava As JAVASESSION      
    Dim classJavaA As JAVACLASS
    Dim objectJavaA As JAVAOBJECT        
    Dim lsB As LogWSDTO
    Set sessionJava = New JAVASESSION
    Set classJavaA = sessionJava.GetClass("de.leonso.test/A")
    Set objectJavaA = classJavaA.CreateObject     
    Set lsB = New LogWSDTO()
    print objectJavaA.a(lsB.getJavaObject())
End Sub

Java ScriptLibrary "AandB"中的Java类:

package de.leonso.test;
public class A {
    public String a(B b) {
        return b.b();
    }
}
package de.leonso.test;
public class B {
    public String b() {
         return ("hallo");
    }
}

最新更新