• ベストアンサー

逆コンパイルの見方について(再度)

逆コンパイル(JAD)で以下のようになります。 if(resultP.getRs().next()) {をどう処置するかが問題だと思いますが、如何せん実力不足です。break MISSING_BLOCK_LABELが複数あるので色々 やってみなしたが駄目です。 アドバイス下さるよう御願い申し上げます。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 何卒宜しく御願い致します。

  • Java
  • 回答数2
  • ありがとう数12

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

  • ベストアンサー
  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

きれいに逆コンパイルできなった そんなときは それっぽいコードに組み立てあげるしかないのよ。 おそらく if(!resultP.getRs().next()) { obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); } なんじゃないかと推測はできるけど。 他のIF文も同様ね。 あといくつ質問が来るのかしら。

yotarou
質問者

お礼

ありがとうございました。 無謀かもしれませんが未だ頑張りますので宜しく御願い致します。

yotarou
質問者

補足

これが最後です。 推測というのは経験にもとづくものです。 経験がないのを口惜しくは思いますが、短時間で経験をあがなうことは出来ません。人に縋るより術がなく何度も質問してしまいました。 如何せん状況が悪すぎるのが実態で、ここを乗り越えるには人様にお知恵を拝借するにかないと決めていました。 全く、Webを触ったこともない中でここ3ヶ月Java、JSP等々、おぼろげな推論と手探りで手直しして来ました。 日本人は約束をベースに動いている民族です。こちらでは、出来ないと悟ると逃げ出します。経験がなくても逃げ出さない自分に頼るしかありませんでした。 教えるというのは難しいことです。ゴールと現在地のギャップが大きすぎると諦めるしか道がなくなります。このギャップの幅も民族によって異なるものと思われます。この地では「自分で考えろ!」というと逃げ出します。幼児のようなものです。 幼児に教えるには、少し背伸びすれば出来そうなことをやらせる。褒めるの繰り返ししかありません。 「自分で考えろ!」が成立するのは、皆、能力を持っているだから頑張れという前提があるのです。階級性が強い社会では、ものを考えるのは支配階層の役割です。この地では大卒であっても東西南北の概念すら分かりません。 一方で、日本も今岐路にあるように思われます。支配階層が実は全く無能であったことに気付いてしまったのです。再設計が必要なのですが、誰かがやってくれないかと待っているのが現状でしょう。 余分なことを書きましたが色々アドバイスありがとうございました。

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

JavaのAPIリファレンス。日本語もある http://java.sun.com/javase/reference/api.jsp 「Java 入門」で検索してでてきたものをいくつか適当に http://www5c.biglobe.ne.jp/~ecb/java/java00.html http://www.tohoho-web.com/java/index.htm http://sunjava.seesaa.net/ >if(resultP.getRs().next()) {をどう処置するかが問題だと思いますが、如何せん実力不足です。 >break MISSING_BLOCK_LABELが複数あるので色々やってみなしたが駄目です。 MISSING_BLOCK_LABELには既に回答が付いてるようですが http://oshiete1.goo.ne.jp/qa5808345.html こんなの繰替えしてたらきりがないんじゃないですか? 仕事でやってることなら、サポートを頼むなり、専門の技術者を雇うなりしたほうがよくないですか?

yotarou
質問者

お礼

ご説ご尤もです。 よんどころなき事情とご推察下さるよう御願いします。 ありがとうございました。

関連するQ&A

  • 逆コンパイルの見方について(再度)

    もう一度だけ教えて下さい御願いします。逆コンパイルをした結果が読めません。どうのようにに読めばいいでしょうか、同様の修正を行いたいと思います。 private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); if(resultP.getRs().next()) { break MISSING_BLOCK_LABEL_51; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentContent(resultP); if("sch".equalsIgnoreCase(srcform.getContentType())) { break MISSING_BLOCK_LABEL_107; } resultT = daGetParentToUser(conn); if(resultT.getRs().next()) { break MISSING_BLOCK_LABEL_102; } obj = returnList(); DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); setParentToUser(resultT); DBResult resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } srcform.setFocusElement(null); obj = srcform; DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); Exception exception; exception; DBUtil.closeConnection(conn); throw exception; } 気張ってはいるのですが、もう一度ご指導願います。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    askaaska`様 コンパイルまでは出来ましたが実行段階で不調です。やみくもにやっているのでご迷惑をお掛けしているのは重々承知しています。恐らくこのプログラムからJSPを実行してWebに表示しているものと考えられます。残念ながら画面が遷移しません。このプログラムだけです、あとは無理やり直しました。邪道とは思いますが方法がありません。 public class TranslationEntryBL { private final String STR_ARRAY[]; private TranslationEntryForm srcform; private TranslationEntryBL() { STR_ARRAY = new String[0]; srcform = null; } public TranslationEntryBL(TranslationEntryForm srcform) { STR_ARRAY = new String[0]; this.srcform = null; this.srcform = srcform; } public GenericApplicationForm init() throws Exception { initCommonInfo(); if(srcform.getParentContentID().equalsIgnoreCase(srcform.getSelectContentID()) && !"scx".equalsIgnoreCase(srcform.getContentType())) { srcform.setFocusElement("entryTitle-1"); } else if(srcform.getEntryContent().length > 0) { srcform.setFocusElement("entryContent"); } else { srcform.setFocusElement(""); } return prepareContentData(); } public GenericApplicationForm refresh() throws Exception { return init(); } public GenericApplicationForm returnList() throws Exception { TranslationListForm nextform = new TranslationListForm(srcform); nextform.setEventName("init"); return nextform; } private GenericApplicationForm prepareContentData() throws Exception { Connection conn; DBResult resultP; DBResult resultT; conn = null; resultP = null; resultT = null; DBResult resultC = null; Object obj; conn = DBUtil.getConnection(srcform.getWebInfoPath()); resultP = daGetParentContent(conn); // kokomade okay if(resultP.getRs().next()) { // kokomade okay obj = returnList(); DBUtil.closeConnection(conn); // kokomade okay return ((GenericApplicationForm) (obj)); // kokodetomaru } setParentContent(resultP); resultC = daGetChildContent(conn); setChildContent(resultC); if(!"refresh".equalsIgnoreCase(srcform.getEventName())) { srcform.setSelectContentID(""); String languages[] = GetConfVal.getConfVal("def_datalanguage", srcform.getBasicInfoDTO()).split(","); srcform.setEntryTitle(new String[languages.length]); srcform.setEntryContent(new String[languages.length]); srcform.setEntryContentOriginalFlag(new String[languages.length]); srcform.setEntryContentLanguage(new String[languages.length]); for(int i = 0; i < languages.length; i++) { srcform.setEntryTitle("", i); srcform.setEntryContent("", i); srcform.setEntryContentOriginalFlag("", i); srcform.setEntryContentLanguage("", i); } } try { srcform.setFocusElement(null); obj = srcform; } catch (Exception exception) { DBUtil.closeConnection(conn); throw exception; } DBUtil.closeConnection(conn); return ((GenericApplicationForm) (obj)); } return ((GenericApplicationForm) (obj));のところで処理が止まります。何かアドバイスを下さい御願いします。尚、止まると判断しているのはBEEP音を入れてどこまで動いたかを確認したものです。 最早、専門家でないと出来ない領域かと思いますが、何卒宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について

    ソースがなくて困ってJADの逆コンパイルをしてみました。 (Decompiled by Jad v1.5.8e.)以下のように結果が出ます。 public GenericApplicationForm save() throws Exception { Connection conn = null; TranslationEntryForm translationentryform; initCommonInfo(); if(checkEntryContent()) { break MISSING_BLOCK_LABEL_24; } translationentryform = srcform; DBUtil.closeConnection(conn); return transentryform; conn = DBUtil.getConnection(srcform.getWebInfoPath()); daSaveContent(conn); conn.commit(); ContentData(); break MISSING_BLOCK_LABEL_61; Exception exception; exception; DBUtil.closeConnection(conn); throw exception; DBUtil.closeConnection(conn); return srcform; } Break MISSING_BLOCK_LABEL とexception;並びにCloseが2箇所あるところがおかしいと思うのですが、どう読めば良いでしょうか 変な質問で申し訳ありませんが宜しく御願い致します。

    • ベストアンサー
    • Java
  • 逆コンパイルの見方について(再度)

    Jad v1.5.8e.で逆コンパイルしています。下段のParseException e;をどう理解していいか分かりません。恐らくsdfFrom.parse(val)との関係だと思うのですが public class Formatter { public Formatter() { } public static String convDateFormat(String val, String formatFrom, String formatTo) throws IllegalArgumentException { SimpleDateFormat sdfFrom; SimpleDateFormat sdfTo; if(val == null || formatFrom == null || formatTo == null) { throw new IllegalArgumentException(); } sdfFrom = Util.getSDF(formatFrom); sdfTo = Util.getSDF(formatTo); sdfFrom.setLenient(false); sdfTo.setLenient(false); return sdfTo.format(sdfFrom.parse(val)); ParseException e; e; return val; } 何卒、宜しく御願いします。

    • ベストアンサー
    • Java
  • コネクションを使いまし??? au携帯でオープンアプリで通信のテスト

    au携帯でオープンアプリで通信のテストをしています。 HTTP GETメソッドを実行する には以下のようにすれば良いのですが、 下のreadHttpConnection関数を呼び出すごとに、 通信確認 このオープンアプリは通信を行おうとしています。 通信を許可しますか? ●許可する ○許可しない となります、以前の質問でコネクションを使いましをすれば、最初の1回で済むと回答を得ましたが、どのように使いまわしをすればそうなるのかわかりません。 conn = (HttpConnection)Connector.open(url, Connector.READ, true); ここに入力するURLは、毎回異なるため(例えば http://test?s=1 や http://test?s=2 など) どうしたらよいのでしょうか? //=== ソース === int readHttpConnection(String url, byte[] data) throws Exception { HttpConnection conn = null; InputStream in = null; int i, length = 0; try { conn = (HttpConnection)Connector.open(url, Connector.READ, true); conn.setRequestMethod(HttpConnection.GET); in = conn.openInputStream() ; while((i = in.read(data, length, data.length - length)) > 0) length += i; } catch(Exception ex) { } finally { if(in != null) in.close(); if(conn != null) conn.close(); } return length; }

    • ベストアンサー
    • Java
  • 動的セレクトボックスのSelectedについて

    以下のように、動的セレクトボックスを作りました。これ自体は問題なく動くのですが、selectedの指定方法がわかりません。例えば、ページ表示に「東京都」と「中央区」を選択している状態にしたいです。よろしくお願いいたします。 <html> <head> <script type="text/javascript"><!-- function SelectOption(parentValue, text, title, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; this.title = title; if(style) { this.style.cssText = style; } }; return this; } function SelectBox(id) { function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } var options = []; this.registOption = function(option) { options[options.length] = option; }; var child = null; this.setChild = function(childObj) { child = childObj; }; this.make = function(parentValue) { var obj = getObject(); if(obj) { obj.options.length = 0; var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } if(child) { child.make(obj.value); } } }; return this; } var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "都道府県", "1")); box1.registOption(new SelectOption(null, "神奈川県", "都道府県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "区市町村", "1")); box2.registOption(new SelectOption("1" , "中央区" , "区市町村", "2")); box1.setChild(box2); window.onload = function() { box2.make("1"); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2"></select> </select> </form> </body> </html>

  • javaの掲示板について

    今現在パスワードを比較して一致していれば削除としたのですがjava.sql.SQLException: Can not issue data manipulation statements with executeQuery().というエラーがtomcatにでます。 サーブレットはこう書いています //削除 if(deleteMessage != null){ String deleteid = request.getParameter("id"); String deletepassword = request.getParameter("deletepassword"); String rspassword = dao.getPassword(deleteid); if (deletepassword.equals(rspassword)){ dao.deleteMessage(delete); success = "削除しました。"; request.setAttribute("success", success); } else{ errorpass = "パスワードが違います。"; request.setAttribute("errorpass", errorpass); } } 比較用のパスワードをデータベースから取り出すDAOはこうしています。 public int deleteMessage(String strid) throws Exception { Vector messageList = new Vector(); int i = 0; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; try{ conn = this.getConnection(); String sql = "delete from MESSAGE_TABLE where ID = ? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, strid); rs = pstmt.executeUpdate(); } finally { this.close(rs); this.close(pstmt); this.close(conn); } return i; } public String getPassword(String id) throws Exception { Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; String rspassword = null; try { String deleteid = null; conn = this.getConnection(); String sql = "SELECT * FROM MESSAGE_TABLE where ID = ? "; pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); rs = pstmt.executeQuery(); if(rs.next()){ rspassword = rs.getString("PASSWORD"); } } finally { this.close(rs); this.close(pstmt); this.close(conn); } return rspassword; } データベースからパスワードがとれていないから起きているのだとは思うのですが、どのようにしたらとれるでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • セレクトボックスに"value"と"word"を付け加えたい。

    初めての投稿をさせてもらいます。JavaScript初心者な者で解る方がいらっしゃればご教授のほど宜しくお願いします。 質問させてもらいたい事はこちらのソースに"value"と"word"を付け加えることは出来ますでしょうか? 外部ファイルには /** * 選択肢クラス * @param parentValue 親の値(null:いつでも表示) * @param text 表示テキスト * @param value 値 * @param style CSS(省略可) */ function SelectOption(parentValue, text, value, style) { this.parentValue = parentValue; this.setOption = function() { this.text = text; this.value = value; if(style) { this.style.cssText = style; } }; return this; } /** * セレクトボックスクラス * @param id セレクトボックスID */ function SelectBox(id) { /** * IDに対応オブジェクトを取得 * @return オブジェクトorNULL */ function getObject() { var obj = document.getElementById(id); if(!obj.options && ( (typeof obj.length) == "number") ) { if(obj.length > 0) { obj = obj[0]; } else { obj = null; } } return obj; } // オプションのリスト var options = []; /** * オプション登録 * @param condition 表示条件 */ this.registOption = function(option) { options[options.length] = option; }; // 子のオブジェクト var child = null; /** * 子のオブジェクトを設定する * @param childObj 子のオブジェクト */ this.setChild = function(childObj) { child = childObj; }; /** * オプション反映 * @param parentValue 親の値(null:全部表示) * ※比較に==を使っているのでundefinedもnullと等しく扱われる。 */ this.make = function(parentValue) { var obj = getObject(); if(obj) { // 選択肢削除 obj.options.length = 0; // 表示すべき選択肢抽出 var opt = (parentValue != null) ? [] : options; if(parentValue != null) { for(var i = 0; i < options.length; i++) { if( (options[i].parentValue == null) || (options[i].parentValue == parentValue) ) { opt[opt.length] = options[i]; } } } // 選択肢反映 obj.options.length = opt.length; for(var i = 0; i < opt.length; i++) { opt[i].setOption.call(obj.options[i]); } // 子のオブジェクトにも連鎖反映 if(child) { child.make(obj.value); } } }; return this; } HTMLファイルには <html> <head> <title>セレクトボックス親子関係</title> <script type="text/javascript" src="Select.js" charset="Shift_JIS"></script> <script type="text/javascript"><!-- var box1 = new SelectBox("sb1"); box1.registOption(new SelectOption(null, "都道府県", "0", "color:gray;")); box1.registOption(new SelectOption(null, "東京都" , "1")); box1.registOption(new SelectOption(null, "神奈川県", "2")); var box2 = new SelectBox("sb2"); box2.registOption(new SelectOption(null, "区市町村", "0", "color:gray;")); box2.registOption(new SelectOption("1" , "千代田区", "1")); box2.registOption(new SelectOption("1" , "中央区" , "2")); box2.registOption(new SelectOption("2" , "横浜市" , "3")); box2.registOption(new SelectOption("2" , "川崎市" , "4")); var box3 = new SelectBox("sb3"); box3.registOption(new SelectOption(null, "詳細" , "0", "color:gray;")); box3.registOption(new SelectOption("1" , "一番町" , "1")); box3.registOption(new SelectOption("3" , "みなとみらい", "2")); box1.setChild(box2); box2.setChild(box3); window.onload = function() { box1.make(null); }; //--></script> </head> <body> <form> <select id="sb1" onchange="box2.make(this.value);"></select> <select id="sb2" onchange="box3.make(this.value);"></select> <select id="sb3"></select> </form> </body> </html> となっております。

  • なぜコンパイルエラーにならない?

    flag: for ( int i= 0 ; i<5 ; i++){ for(int j=0 ; j<3 ; j++){ label:  if(i<j){ i++; continue label; } System.out.println("あ"); } } ある問題集の問題なのですが、ラベルをfor かwhile 以外につけているのでコンパイルエラーになるという問題でした。 納得。 確かに、打ち込んでみると、コンパイルエラーになります。 しかし、continue を break に変更すると、コンパイルエラーにはならないのです。 なぜでしょうか。 テキストでは、break であれ continueであれ、for や while 以外につけるとコンパイルエラーになると書かれています。 どなたか、教えていただけますか?

    • ベストアンサー
    • Java
  • Listからのnull要素を削除方法は?

    次のリストに入っているnull要素を削除する方法をお教え下さい。  List<String> lst = new ArrayList<String>(); while (lst.remove(null)); や for (int i=0; i < lst.size();i++) {  if (lst.get(i) == null ) lst.remove(i); } ではException in thread "main" java.lang.UnsupportedOperationException が起こります。 2011 Nov. 27.

    • ベストアンサー
    • Java