問題タブ [rpg]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RPG から Java を呼び出すと、自分の Java クラスが見つかりません
RPG から Java メソッドを呼び出そうとしていますが、マニュアルのJava と RPG の紹介 およびILE RPG からの Java メソッドの呼び出しに従っています。
しかし、Java 関数を呼び出す RPG 関数を呼び出すと、次のエラーが発生します。
Java メソッド (CGDF) の呼び出し時に Java 例外を受け取りました。
F1 を押すと、次のメッセージが表示されます。
メッセージ 。. . . : Java メソッド (CGDF) の呼び出し時に Java 例外を受け取りました。
原因 。. . . . : プログラム DEVLYNLIB/HELLO の RPG プロシージャ HELLO は
、クラス "JavaCallClass" のシグネチャ "(II)I" でメソッド "test.CallStaticMethod" を呼び出すときに、Java 例外 "java.lang.NoClassDefFoundError: JavaCallClass (間違った名前: test/JavaCallClass)" を受け取りました。 .
これが私のJavaクラスです:
RPG機能:
CLASSPATH 変数で何かをしなければならないのではないかと思います。正しく設定したと思います。私のJavaクラスファイルは/home/WAL60326/TutorialProject/test
ここに私の完全な CLASSPATH 変数値があります:
'/Plex/Objava/lib/obrun.jar:/Plex/WsydXml11.jar:/PLEX/JT400.JAR:/PLEX/WSYDUTIL.JAR:/Plex/xercesImpl.jar:/Plex/xalan.jar:/PLEX/ XML-APIS.JAR:/PLEX/WSYDDWA21.JAR:/PLEX/COMMONS-HTTPCLIENT-3.1.JAR:/PLEX/COMMONS-LOGGING-1.1.JAR:/PLEX/COMMONS-CODEC-1.3.JAR:/PLEX/ADDRESSBOOK .JAR:/PLEX/NEXTNUM.JAR:/PLEX/UDC.JAR:/PLEX/P6SERVICES.JAR:/PLEX/MASTERVOCAB.JAR:/home/WAL60326/TutorialProject/test'
ibm-midrange - IBM AS400 ベースの RPG/iseries
IBM AS400 ベースの rpg/iseries プログラムから https api にアクセスする必要があります。
これを試すために「Mocha W32 TN5250」をインストールしましたが、セッションに接続できませんでした。
IBM AS400 ベースの rpg/iseries プログラムから https 呼び出しを行うことは可能ですか?
java - Java を呼び出す RPG、java.lang.NoClassDefFoundError
私の目的は、RPG 関数から開始された Java から Web サービスを呼び出すことです。(私は知っています、それは長い道のりですが、それは私たちが必要としているものです)
AS400 にフォルダーを作成し/JavaLib
、必要なすべての外部 Jar をコピーしました。
WebServiceCaller.Call()
Web サービスを呼び出す静的メソッドを持つ Java クラスを作成します。RPG プログラムを実行するときはいつでも、RPG がこのメソッドを呼び出すまでは問題ありません。
Java 例外が発生します。
メッセージ 。. . . : Java メソッド (CGD F) の呼び出し時に Java 例外を受け取りました。
原因 。. . . . : プログラム WAL60326/WEBSERCALR の RPG プロシージャー WEBSERCALR は
、シグネチャー「(LwebService.Input;)LwebService.Output;」でメソッド「Call」を呼び出したときに、Java 例外「java.lang.NoClassDefFoundError: javax.xml.rpc.ServiceException」を受け取りました。クラス
「webService.WebServiceCaller」で。
クラスパス変数:
/JavaLib:/home/WAL60326/WebServiceCaller
したがって、RPG と Java クラスは問題なく、CLASSPATH 変数を正しくセットアップしたと思います。他に何を確認する必要があるのか わかりません。
アップデート
したがって、必要なjarファイルjaxrpc.jar
はチェック済みです。それは私の中に存在します/JavaLib
。AS400 で Java のバージョンを確認できましたjava version "1.5.0"
。次の手順に従って、OS が V6R1 であることを確認します。
このJarファイルをロード/動作させるには、私のJavaバージョンが古くなっている可能性がありますか? その可能性さえありますか?
編集
ここに私のソースコードがあります:
Java: WebServiceCaller.Java
GetBidsProxy クラスは Eclipse によって生成されることに注意してください。Java 側は、私の Windows マシンでうまく動作します。AS400マシンではありません。
RPG: WEBSERCALR.RPGLE
sql - RPGプログラミングではnullは許可されていませんか?
RPG プログラマーから、AS400 ベースの DB2 データベース テーブルではどれも null を許可できないと言われました。これは、RPG で null を「プログラミングするのは非常に難しい」からです。これが本当かどうか知りたいのですが、もしそうなら、この基本的なデータベース機能を RPG で使用するのが非常に難しい理由は何ですか?
これは Stack Overflow の範囲から少し外れている可能性があることは承知していますが、これは、この種の情報について私が知っている最良の情報源です。
java - RPG から Java を呼び出し、自分以外のすべてのユーザーに対して ClassNotFoundError
ClassNotFoundError
RPG から Java メソッドを呼び出している間、ご協力をお願いいたします。これは、私以外のユーザーが私のプログラムを実行しようとしたときに発生します。文字通りCLASSPATHまたはjarファイルへのアクセスに問題があるようですが、その側面からも試しました。
説明: jar ファイルで Java メソッドを呼び出す RPG プログラムがあります。私の CLASSPATH には、適切な jar が含まれています (JtOpen jar ファイル)。緑と黒の画面 (Iseries セッション マネージャー) から RPG プログラムを実行すると、完全に動作します。別のユーザーが同じ方法で実行しようとすると、次のエラーメッセージがスローされます。
RPG Procedure received Java Exception java.lang.NoClassDefFoundError: com.ibm.as400.access.AS400 when calling method "invokeApiPgm" with signature "([Ljava.lang.String;Ljava.lang.String;I[Ljava.lang.String;)Z" in class "callIceApi.CallIceApiPgm"
.
上記の署名は、私が呼び出すメソッドの署名とも同じです。Java が不平を言っているクラスは AS400 のもののように見えますか、それとも私のものでしょうか? AS400 クラスが公開されていることがわかります。クラス オブジェクトは、クラスのコンストラクターによって正常に作成されました。main メソッドを呼び出すと失敗するだけinvokeApiPgm
です。
みんな、私が何を見逃している、または台無しにしていると思いますか?
ご協力いただきありがとうございます!
テウェル
java - RPGから2次元bye配列パラメータを取るJavaメソッドを宣言して呼び出す方法は?
引数の 1 つが 2 次元バイト配列 ( byte[][]
) である Java メソッドがあります。そのメソッドを RPG から呼び出したかったのです。たとえば、RPGでその引数をnAとして宣言することにより、1次元のバイト配列で機能することを知っています。ここで、nは配列の長さであり、Aはアルファベットです。byte[]
つまり、RPG の nA はJavaと同じです。しかし、引数宣言 RPG に DIM(k) を追加すると、メソッドのプロトタイプでは Keyword は許可されていないと表示されます。String データ型を使用してそれを行うこともできましたが、バイトから Java String へ、またはその逆のようなデータ型変換を避けたかったのです。(効率性の問題)
誰かがそれを機能させるのを手伝ってくれますか?