Вызов Java установить и получить метод из ile RPG - PullRequest
0 голосов
/ 14 января 2019

Я работаю на кроссоверной связи с ile RPG и Java. Я хочу вызвать класс в файле .jar с некоторым строковым параметром и хочу вернуть строку в мою программу RPG.

У меня проблема в моем методе набора. Я не могу вызвать этот метод из RPG.

Мой вызов метода "getOut ()" работал хорошо. Я получаю правильную JString обратно. Набор CLASSPATH правильный.

Посмотрите на мой код:

Код RPG:

    D FirstCall       S               O   Class(*Java:'FirstCall') 
    D FirstCall1      S                   LIKE(FirstCall) 
    D*
    D* Constructor in .jar File                                                                
    D new_FirstCall   PR              O    EXTPROC(*Java:              
    D                                              'FirstCall'         
    D                                              :*CONSTRUCTOR)  
    D*
    D* Create Java String Object    
    D makestring      PR              O    EXTPROC(*JAVA:      
    D                                       'java.lang.String':
    D                                       *CONSTRUCTOR)      
    D    bytes                      30A    CONST VARYING     
    D*
    D* Prototype for Java String's getBytes method
    D cvtToBytes      PR            30A   EXTPROC(*JAVA:                        
    D                                             'java.lang.String':   
    D                                             'getBytes')           
    D                                     Varying  
    D*                                            
    D* Get Methode in .jar File       //this work well                                                                                                     
    D getOut          PR              o   EXTPROC(*JAVA:                    
    D                                             'FirstCall':              
    D                                             'getOut')                 
    D                              Class  (*JAVA:'java.lang.String')
    D*                                                                          
    D* Set Methode in .jar File      //Here i have some problems                                                                                                     
    D setOut          PR              O   EXTPROC(*JAVA:                    
    D                                             'FirstCall':              
    D                                             'setOut')                 
    D                                     Class  (*Java:'java.lang.String') 
    D*                                                                      
    C* Parameter                                                                                                                 
    C     *entry        plist                                         
    C                   parm                    $input                
    C                   parm                    $output         
    /Free  

    exSr setCLASSPATH;
    FirstCall   = new_FirstCall();           
    fldjString  = makestring(%trimr($input));
    //Set Method call
    setOut(FirstCall:fldjString);        
    fldjString2 = getOut(FirstCall);         
    fldBty      = cvtToBytes(fldjString);    
    $output     = fldBty;

    *INLR = *ON;  
    /End-Free          

Java-код:

    public class FirstCall 
    {
        public String sOut; 

            public static void main(String[] args) throws Exception{
            }

            public FirstCall(){
            }

        public String getOut(){
            return sOut;
        }

        public  void setOut(String sIn){
            sOut = sIn + " - java";
        }
    }

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Прототип setOut не должен иметь возвращаемого значения. Удалите «O» из строки setOut.

D setOut          PR                  EXTPROC(*JAVA:                    
D                                             'FirstCall':              
D                                             'setOut')                 
D  strparm                        O   Class  (*Java:'java.lang.String') 
D                                     CONST
0 голосов
/ 14 января 2019

вы объявляете setOut как getOut ... RPG ожидает возврата строки и отсутствия парма ...

Вы должны изменить свою декларацию следующим образом:

    D setOut          PR                 EXTPROC(*JAVA:                    
    D                                             'FirstCall':              
    D                                             'setOut')                 
    D  strparm                        O   Class  (*Java:'java.lang.String') 
    D                                    CONST

Если вам также необходим возврат parm (STRING), например:

    D setOut          PR              O   EXTPROC(*JAVA:                    
    D                                             'FirstCall':              
    D                                             'setOut')                 
    D                                     Class  (*Java:'java.lang.String') 
    D  strparm                        O   Class  (*Java:'java.lang.String') 
    D                                    CONST
...