首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在LS2J中传递另一个类的参数?

如何在LS2J中传递另一个类的参数?
EN

Stack Overflow用户
提问于 2014-06-26 13:53:07
回答 1查看 631关注 0票数 2

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

问题是返回了一个错误:

LS2J错误:引发java.lang.ClassNotFoundException: com.pasquier.DTO.WS.LogWSDTO

我不知道为什么?

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

我在莲花LS2J的课程:

代码语言:javascript
复制
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方法

我在密码里叫它:

代码语言:javascript
复制
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。

代码语言:javascript
复制
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:

代码语言:javascript
复制
Set Me.logDTO = logWSparam

是因为这个吗?那我该怎么办??

我试过了但不起作用。

我在LS2J中添加了一个LS2J方法(不是只在LS2J上使用java )

代码语言:javascript
复制
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

我试着把这叫做我的事业:

代码语言:javascript
复制
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 

我无法保存此更改:它返回:

代码语言:javascript
复制
"type mismatch on : GETJAVAOBJECT"

因此,我尝试在LogWebService的java类中添加该方法。我试着在LS2J:

代码语言:javascript
复制
Public Function getJavaObject()         
    Set methodJava = classJava.GetMethod("getJavaObject","()Lcom/pasquier/DTO/WS/LogWSDTO;")        
    getJavaObject = objectJava.getJavaObject()  
End Function

我打电话给:

代码语言:javascript
复制
Public Sub appelLog()           
    Set ilog = New LogWebService()          
    Set logDTO = logDTO.getJavaObject
    Call ilog.setLog(logDTO)

它不起作用,同样的信息,我哭了!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 14:15:01

objectJava.setLog(logDTO) - logDTO必须是由LS2J生成的Java对象。它不适用于LotusScript类对象。

将方法getJavaObject()添加到LotusScript类LogWSDTO中,该类返回LS2J Java对象objectJava。以这种方式使用:

代码语言:javascript
复制
objectJava.setLog(logDTO.getJavaObject())

这是一个有用的例子:

LotusScript代理:

代码语言:javascript
复制
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类:

代码语言:javascript
复制
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");
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24432443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档