Javaのメモリリーク?を解決するには?

このQ&Aのポイント
  • javaプログラムを一ヶ月ほど動かしていたらメモリリークが発生し、プログラムが終了してしまった。どのコードを修正すればいいのか分からない。
  • javaプログラムを長期間動かしていると、[Unloading class]や[GC]のエラーメッセージが表示されたり、メモリ使用量が増えたりすることがある。
  • メモリリークの原因は、不要なオブジェクトの参照が解放されずに保持されていることが多い。ガーベージコレクションを適切に行い、不要なオブジェクトを解放するようにすると、メモリリークを解消することができる。
回答を見る
  • ベストアンサー

javaのメモリリーク?を解決するには?

あるjavaプログラムを一ヶ月ほど動かしていたら以下のエラーが発生し プログラムが終了してしまったのですけれど、どこのコードを修正して直せば いいのか分かりません。 [Unloading class sun.reflect.GeneratedMethodAccessor26483] [Unloading class sun.reflect.GeneratedMethodAccessor26496] [Unloading class sun.reflect.GeneratedMethodAccessor26519] [Unloading class sun.reflect.GeneratedMethodAccessor26503] [Unloading class sun.reflect.GeneratedMethodAccessor26513] [Unloading class sun.reflect.GeneratedMethodAccessor26514] [Unloading class sun.reflect.GeneratedMethodAccessor26495] [Unloading class sun.reflect.GeneratedMethodAccessor26516] [Unloading class sun.reflect.GeneratedMethodAccessor26511] [Unloading class sun.reflect.GeneratedMethodAccessor26492] [Unloading class sun.reflect.GeneratedMethodAccessor26501] [Unloading class sun.reflect.GeneratedMethodAccessor26491] [Unloading class sun.reflect.GeneratedMethodAccessor26487] [Unloading class sun.reflect.GeneratedMethodAccessor26512] [Unloading class sun.reflect.GeneratedMethodAccessor26500] [Unloading class sun.reflect.GeneratedMethodAccessor26508] [Unloading class sun.reflect.GeneratedMethodAccessor26518] [Unloading class sun.reflect.GeneratedMethodAccessor26488] [Unloading class sun.reflect.GeneratedMethodAccessor26507] [Unloading class sun.reflect.GeneratedMethodAccessor26520] [Unloading class sun.reflect.GeneratedMethodAccessor26505] [Unloading class sun.reflect.GeneratedMethodAccessor26510] [Unloading class sun.reflect.GeneratedMethodAccessor26499] [Unloading class sun.reflect.GeneratedMethodAccessor26485] [Unloading class sun.reflect.GeneratedMethodAccessor26502] [Unloading class sun.reflect.GeneratedMethodAccessor26484] [Unloading class sun.reflect.GeneratedMethodAccessor26486] [Unloading class sun.reflect.GeneratedMethodAccessor26515] [Unloading class sun.reflect.GeneratedMethodAccessor26504] [Unloading class sun.reflect.GeneratedMethodAccessor26489] [Unloading class sun.reflect.GeneratedMethodAccessor26498] [Unloading class sun.reflect.GeneratedMethodAccessor26509] [Unloading class sun.reflect.GeneratedMethodAccessor26506] [Unloading class sun.reflect.GeneratedMethodAccessor26493] [Unloading class sun.reflect.GeneratedMethodAccessor26490] [Unloading class sun.reflect.GeneratedMethodAccessor26517] [Unloading class sun.reflect.GeneratedMethodAccessor26497] [Unloading class sun.reflect.GeneratedMethodAccessor26494] Exception in thread "main" java.lang.NullPointerException 1114115.292: [GC [PSYoungGen: 21360K->182K(21504K)] 72667K->51488K(74368K), 0.0018360 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 1114116.249: [GC [PSYoungGen: 21366K->316K(21376K)] 72672K->51682K(74240K), 0.0022510 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 1114117.695: [GC [PSYoungGen: 21372K->368K(20672K)] 72738K->57050K(77632K), 0.0185720 secs] [Times: user=0.02 sys=0.01, real=0.02 secs] 1114117.713: [Full GC [PSYoungGen: 368K->0K(20672K)] [PSOldGen: 56681K->52783K(60608K)] 57050K->52783K(81280K) [PSPermGen: 19491K->19491K(19840K)], 0.2197260 secs] [Times: user=0.21 sys=0.00, real=0.22 secs] 1114118.414: [GC [PSYoungGen: 20288K->448K(20928K)] 73071K->53231K(81536K), 0.0022310 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] Heap PSYoungGen total 20928K, used 12741K [0xa9b40000, 0xab2d0000, 0xb45e0000) eden space 19520K, 62% used [0xa9b40000,0xaa741508,0xaae50000) from space 1408K, 31% used [0xab170000,0xab1e0000,0xab2d0000) to space 2304K, 0% used [0xaae50000,0xaae50000,0xab090000) PSOldGen total 60608K, used 52783K [0x945e0000, 0x98110000, 0xa9b40000) object space 60608K, 87% used [0x945e0000,0x9796bc00,0x98110000) PSPermGen total 19840K, used 19565K [0x8c5e0000, 0x8d940000, 0x945e0000) object space 19840K, 98% used [0x8c5e0000,0x8d8fb768,0x8d940000)

  • Java
  • 回答数3
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • localica
  • ベストアンサー率52% (202/385)
回答No.2

>メモリリークか単にメモリが足りないのかは分かりませんでしょうか? それを調べるのがお仕事でしょう。 ダンプを解析する、デバッグする、調査しなければわかりません。 >メモリの最大使用量を-Xmx512mから-Xmx1024mに上げて再稼働させたのですけれど、単にメモリが足りないのならこれで大丈夫だろうと思うのですが 原因が分からないので、単にヒープメモリを増やしただけではどうかと思いますが。 オブジェクトが8ギガ近く消費しているので結構メモリを喰うアプリケーションですね。 GCのほとんどが0.0以下なのでスペックは足りているように思えます。 今となっては古いネタですけど。 http://www.atmarkit.co.jp/fjava/rensai4/troublehacks02/troublehacks02_1.html 私も全体的にプログラムを見直すことに一票ですね。

その他の回答 (2)

  • wormhole
  • ベストアンサー率28% (1622/5659)
回答No.3

>メモリリークか単にメモリが足りないのかは分かりませんでしょうか? わかりません。 それを調べるために「プログラムを徹底的に見直してください」と書いてるんです。

  • wormhole
  • ベストアンサー率28% (1622/5659)
回答No.1

「その動かしていたプログラムを徹底的に見直してください。」くらいしかいえないと思うけど。

20081217
質問者

補足

メモリリークか単にメモリが足りないのかは分かりませんでしょうか? メモリの最大使用量を-Xmx512mから-Xmx1024mに上げて再稼働させたのですけれど、単にメモリが足りないのならこれで大丈夫だろうと思うのですが

関連するQ&A

  • java データベース接続

    javaの勉強していまして、質問があります。よろしくお願いします。 javaでデータベースの接続ができなくて迷っております。ずっとネットで調べてもダメでした。 ネットで調べたとおりにやっても、 例外発生:java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver このようなエラーがでます。 eclipseを使ってます。windows7 練習にアクセスにつなごうと思ってます。 事前にデータソース(ODBC)の登録はしました。 ドライバーとかインストールするものなのでしょうか? package sample; import java.sql.Connection; import java.sql.DriverManager; public class Hello { public static void main(String args[]) { try { //JDBCドライバのロード Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //各設定 String url = "jdbc:odbc:SampleDB030"; String user = ""; String pass = ""; //データベースに接続 Connection con = DriverManager.getConnection(url,user,pass); System.out.println("接続成功"); //データベースを切断 con.close(); } catch (Exception e) { System.out.println("例外発生:" + e ); } } }

    • ベストアンサー
    • Java
  • ブルースクリーンが多発します。プロセス、メモリエラー多数。

    最近自作パソコンを組み立て使うようになったのですが、 ブルースクリーンが多くて仕方ありません。 OS再インストールやメモリチェッカーも試したのですが 原因不明のまま解決せず。 スペックは以下の通りです。 CPU:Core2 Quad 3GHz memory:2x2G(認識3Gちょい) Video:NVIDIA GeFroce GTS-250 sound:Sound Blaster X-Fi XtremeGamer 電源:650W HDD:500G OS:windows XP SP3 ブルースクリーンのエラー ☆プロセス系 nv4_disp.sys win32k.sys ks.sys afd.sys usbport.sys ☆メモリ系 0x00000001 0x0000000A 0x00000050 0x000000E3 0x000000E8 0x000000D1 音が鳴っていると、よくバチッバチッとスピーカーから音がして青画面が出ます。 動画を見ていたり、ゲームをしたり、最後は感覚ですがメモリを多く使うと青画面になる事が多いです。 原因が全く分からないので、どなたか教えてください。

  • Javaのメモリ・リークについて

    Javaのメモリ・リークについて 以下のコードはスレッド内で、無限ループをしています。 コンストラクタで呼び出し、ずっとこのままにしておいてもフリーズするか否かが知りたいです。 (jconsole.jarというツールがありますが、まだ理解に至っておりません。) ご存知の方がおられましたら教えてください。 よろしくお願いいたします。 import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class ActioneventRoopTest extends JFrame implements Runnable, ActionListener { JButton start = new JButton(); JButton change = new JButton("切り替え"); Boolean flag = true; public static void main(String[] args) { new ActioneventRoopTest(); } public ActioneventRoopTest() { change.addActionListener(this); start.addActionListener(this); this.add(change); this.pack(); this.setVisible(true); Thread thread = new Thread(this); thread.start(); } public void actionPerformed(ActionEvent e) { if (e.getSource() == change) { if (flag) { flag = false; } else if (!flag) { flag = true; } } } public void run() { while (true) { while (flag) { System.out.println("リンゴ"); } while (!flag) { System.out.println("ミカン"); } } } }

    • ベストアンサー
    • Java
  • JAVAにおけるメモリリーク

    クラスAの中でクラスBがnewされているとき、 クラスAの参照をnull にセットしさえすれば、 内包されているクラスBに確保したメモリも即時に解放されるのでしょうか? それともガーベジコレクションにてどこからも参照されていないことがわかった時点で解放されるのでしょうか? はたまた解放されないのでしょうか? ClassA {  ClassB instanceX = new ClassB(); } - - - - - - - - - - - - - - - - - - - - - - - - new をした際、そのメソッドの最後や、 Exceptionのキャッチ後のthrow前に、 変数 = null; は書いていますが、 これ以外ではどういう点に気をつければ良いかがわかっていません。 どういうときにJavaでメモリリークが起こるのでしょうか?

    • ベストアンサー
    • Java
  • Java 起動しません

    「アプリケーションの起動に失敗しました」詳細をクリック すると下記のような表示がJavaコンソールにでます。IEのオプション 「詳細設定」にJavaが現れません。対応を教えて頂ければ幸です。 記 Java Plug-in 1.6.0_17 使用中の JRE のバージョン 1.6.0_17-b04 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Users\igarashi ---------------------------------------------------- c: コンソールウィンドウをクリア f: ファイナライズキューのオブジェクトをファイナライズ g: ガベージコレクト h: このヘルプメッセージを表示 l: クラスローダリストをダンプ m: メモリ使用率を表示 o: トリガログ q: コンソールを非表示 r: ポリシー設定を再ロード s: システムプロパティと配備プロパティをダンプ t: スレッドリストをダンプ v: スレッドスタックをダンプ x: クラスローダキャッシュをクリア 0-5: トレースレベルを <n> に設定 ---------------------------------------------------- load: クラス jreCheck.class が見つかりません。 java.lang.ClassNotFoundException: jreCheck.class at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at java.net.HttpURLConnection.getResponseCode(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.getBytes(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader.access$000(Unknown Source) at sun.plugin2.applet.Applet2ClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) ... 7 more 例外: java.lang.ClassNotFoundException: jreCheck.class

  • Applet からデータベースへのアクセス

    Java Applet からデータベースにアクセスさせようとしています。 サーバサイドのプログラムは介さずに Applet のみでデータベースへアクセスするプログラムを作ろうとしています。 システムポリシーファイルに C:\Program Files\Java\jre1.5.0_10\lib\security\java.policy grant codeBase "file:///C:/Progra~1/myApplication/ewTester/*" { permission java.security.AllPermission; }; このような権限を設定しました。 Applet は、 ブラウザでアドレスに file:///C:\Program Files\myApplication\ewTester\index.html このように起動します。 実行すると java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPackageAccess(Unknown Source) at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source) at sun.applet.AppletClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at ResultRegister.RegisterResult(ResultRegister.java:16) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.invoke.JSInvoke.invoke(Unknown Source) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at sun.plugin.javascript.JSClassLoader.invoke(Unknown Source) at sun.plugin.com.MethodDispatcher.invoke(Unknown Source) at sun.plugin.com.DispatchImpl.invokeImpl(Unknown Source) at sun.plugin.com.DispatchImpl$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.plugin.com.DispatchImpl.invoke(Unknown Source) このようなランタイムエラーになります。 ソースは、 import javax.swing.JApplet; import java.sql.*; public class ResultRegister extends JApplet { /** * */ private static final long serialVersionUID = 1L; public void RegisterResult(String strQNumber, int intChoice, int intResult){ try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection objConnection = DriverManager.getConnection("jdbc:odbc:Dsn_Result"); Statement objStatemant = objConnection.createStatement(); String strSql = "SELECT MAX(it_Result) AS ResultMax FROM tbl_Result;"; ResultSet objRst = objStatemant.executeQuery(strSql); int intMaxIndex = 0; while(objRst.next()){ intMaxIndex = objRst.getInt("ResultMax"); } strSql = "INSERT INTO tbl_Result ( it_Result, "+ " vc_QNumber, " + " ti_Choice, " + "bt_Result, " + "dt_AnswerDateTime ) " + "VALUES ( " + Integer.toString(intMaxIndex+1) + ", "+ "'" +strQNumber+ "', "+ Integer.toString(intChoice) +", "+ Integer.toString(intResult)+"," + " GETDATE() );"; objStatemant.execute(strSql); objStatemant.close(); objConnection.close(); } catch (Exception e) { e.printStackTrace(); } } } これだけです。 どなたか設定方法の分かるかたおりますでしょうか?

    • ベストアンサー
    • Java
  • 【メモリ増設;マザーボードの対応メモリ選択】

    お疲れ様です。 詳しい方教えてください。 手元にあるデスクトップとノートのメモリ増設を考えています。 自分なりに知らべてみたのですが、これでよいですか? ・デスクトップ(約10年物)  マザーボード:製造元:UNITCOM、モデル:B75H2-M2 対応メモリ:DDR3 1600/1333/1066 SDRAM 240ピン DDR3 DIMM ソケット X 2 32 GB までをサポート https://www.ecs.com.tw/ECSWebSite/Product/Product_SPEC/JA/Motherboard/B75H2-M2%20-LL-V1-DO-0-RR-/%e3%82%bd%e3%82%b1%e3%83%83%e3%83%881155 現在:4GB X2 = 8GB ⇒ 例えば、8GB X2として Team デスクトップ用メモリ DDR3 1600MHz PC3-12800 永久保証 ECOパッケージ (8GBx2枚 Elite Plus) https://www.amazon.co.jp/Team-%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%94%A8%E3%83%A1%E3%83%A2%E3%83%AA-1600MHz-PC3-12800-ECO%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8/dp/B01K48UNW2/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=DDR3+8GBX2&qid=1582550210&s=computers&sr=1-1 16GB X2とすれば Crucial [Micron製] DDR3L デスク用メモリー 16GB x2 ( 1600MT/s / PC3L-12800 / CL11 / 240pin / 1.35V/1.5V / Unbuffered UDIMM ) 永久保証 CT2K204864BD160B https://www.amazon.co.jp/Crucial-%E3%83%87%E3%82%B9%E3%82%AF%E7%94%A8%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC-PC3L-12800-Unbuffered-CT2K204864BD160B/dp/B0123BRJ6Q/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=DDR3+16GBX2&qid=1582550293&s=computers&sr=1-3 というところでしょうか? お聞きしたいのですが、 1. 上記選択で正しいですか? 2. 8GB X2 や DDR4 16GB X2 にくらべ、DDR3 16GB X2 は非常に値段が上がるのですが、これはつまり、DDR3で16GB X2は主流でなかったため流通が少なく、市場原理が働いた結果ということでしょうか? 3. DDR4 16GB X2 で上位互換のようなことはできませんか? 値段からは判断して 16GB X2 は現実出来でなく、8GB X2 としておくべきということでしょうか ・ノートPC(1年前購入) マザーボード:製造元:MouseComputer Co.,Ltd.、モデル:N750WU メモリ:DDR4 SO-DIMM ( 260pin ) ・ DDR4-2400 ( PC4-19200 ) https://www2.mouse-jp.co.jp/ssl/user_support2/sc_faq_documents.asp?FaqID=28596 現在:4GB ⇒ 16GB X2として、 CT2K16G4SFD824A [SODIMM DDR4 PC4-19200 16GB 2枚組] https://kakaku.com/item/K0000881986/ Crucial [Micron製] DDR4 ノート用メモリー 16GB x2( 2400MT/s / PC4-19200 / 260pin / SODIMM)永久保証 CT2K16G4SFD824A https://www.amazon.co.jp/Crucial-Micron%E8%A3%BD-%E3%83%8E%E3%83%BC%E3%83%88%E7%94%A8%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC-PC4-19200-CT2K16G4SFD824A/dp/B019FRCV9G この選択で正しいですか? このノートPCはこの先数年~10年くらいは使うことになりそうです。 であれば、多少お金をかけてでも早めにメモリを増設しておくべきですよね? 以上 長文にお付き合いいただきましてありがとうございます。 よくヒューマンエラーをするやつなので、詳しい方に確認したく質問させていただきました。

  • 式の組み込み

    implicit real*8 (a-h,o-z) y=2.0d0 k=1.0d0+y x=k+3.0d0 write(6,10) x 10 format(1H ,F7.3) end とすると、当然6.000が出力されます。ここにおいてk=1.0d0+yをfunction又は、subroutineで書こうと思い、 subroutineで書いたのを以下に載せます。 *main implicit real*8 (a-h,o-z) y=2.0d0 call setcns (y) x=k+3.0d0 write(6,10) x 10 format(1H ,F7.3) end *sub function setcns (y) implicit real*8 (a-h,o-z) k=1.0d0+y return end これでビルドすると、『Variable K is used before its value has been defined』と警告されます。 走らすと、3.000と表示され、k=・・が反映されていないようです。 どの様にしたらいいのか教えて下さい。

  • Java コンソールが起動しない

    Java コンソールが起動しない アプリケーションの起動に失敗しましたとでる。 明細 Java Plug-in 1.6.0_22 使用中の JRE のバージョン 1.6.0_22-b04 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Documents and Settings\Owner ---------------------------------------------------- c: コンソールウィンドウをクリア f: ファイナライズキューのオブジェクトをファイナライズ g: ガベージコレクト h: このヘルプメッセージを表示 l: クラスローダリストをダンプ m: メモリ使用率を表示 o: トリガログ q: コンソールを非表示 r: ポリシー設定を再ロード s: システムプロパティと配備プロパティをダンプ t: スレッドリストをダンプ v: スレッドスタックをダンプ x: クラスローダキャッシュをクリア 0-5: トレースレベルを <n> に設定 ---------------------------------------------------- load: クラス LiveApplet.class が見つかりません。 java.lang.ClassNotFoundException: LiveApplet.class at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source) at sun.plugin2.applet.Plugin2Manager.createApplet(Unknown Source) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.net.ConnectException: Connection refused: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at sun.net.NetworkClient.doConnect(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.openServer(Unknown Source) at sun.net.www.http.HttpClient.<init>(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.http.HttpClient.New(Unknown Source) at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown So

    • ベストアンサー
    • Java
  • javaからAS400のプログラム起動

    JAVAからAS/400のプログラムを起動しようとしています。 AS/400側はCLのプログラムで、 1.パラメータを受け取ってデータエリアの更新 2.他PGMのCALL(パラメータの内容を印刷) の2つを行おうとしています。 実行したところ、1.のデータエリア更新はできているのですが、2.の他PGMのCALLが実行されません。 同じような経験をされた方で、何かご存じの方がいらっしゃいましたら、よろしくご教授ください。 以下、ソースを示します。 JAVA側の内容 import java.io.*; import com.ibm.as400.access.*; public class TESTD{ public static void main( String args[] ){ try{ CallAS400( args[0] ); }catch(Exception e){ System.out.println( e.getMessage() ); } } private static void CallAS400(String RCode){ try{ AS400 sys = new AS400(sysName,USER,PASS); ProgramParameter[] parmList = new ProgramParameter[1]; AS400Text nametext = new AS400Text(6); parmList[0] = new ProgramParameter(nametext.toBytes(RCode)); ProgramCall pgm = new ProgramCall(sys,TEST.PGM,parmList); pgm.run(); sys.disconnectAllServices(); }catch(Exception e){ System.out.println( e.getMessage() ); } } } *AS/400側:TEST.PGM の内容 PGM: PGM PARM(&CODE) DCL VAR(&CODE) TYPE(*CHAR) LEN(6) CHGDTAARA DTAARA(QTEMP/DTA) VALUE(&CODE) CALL PGM(TESTPRINT) PARM(0 0 &CODE) RETURN ENDPGM