ããããä¼è©±
ããªãã ä¹ ãã¶ãã«ããæ¹ã¨ãä¼ããã¦ãè²ã æ å ±äº¤æããã®ã§ããããStackTraceãã¿ãªãã§ãããã°ãå§ãã¦ãã¾ã人ãã¯ã ãã¶å°ãªããªã£ã¦ããããã«æã£ã¦ããã®ã§ãããã¾ã ã¾ã çµæ§ãããããã¨ãããããã§ãã
Xãä¾å¤ãã§ã¦ãã®ã§ããä¸æéããã¦ãåå ãããããªãã¦...ã YããããããStackTraceã¯è¦ãï¼ã Xãããã¿ã¦ãªãã§ãã Yãã¡ãã£ã¨è¦ãã¦ã¿ã¦ã Xãããã§ãã Yã(StackTraceè¦ã¦ããã«)ããããåå ããã£ãã Xã...ã Yã...ã
ãã¤ã³ãã¯äºã¤
大ããäºã¤ã®ãã¤ã³ããããã¨èãã¾ããã
A. ä¾å¤çºçæã®ãããã°ä½æ¥ãæé åããã¦ãªã
B. ã¹ã¿ãã¯ãã¬ã¼ã¹ã®è¦æ¹ãããããªã
A. ä¾å¤çºçæã®ãããã°ä½æ¥ãæé åããã¦ãªã
ä¾å¤ãçºçããããã¾ãä½ãããã¹ããï¼ï¼
A-1. ä¾å¤ã¯ã©ã¹åã»ä¾å¤ã¡ãã»ã¼ã¸ãèªã A-2. ã¹ã¿ãã¯ãã¬ã¼ã¹ãè¦ã¦ä¾å¤çºçç®æãç¹å®ãã A-3. ãããã°ãã°ãã¿ã¦æåããã¬ã¼ã¹ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸ãèªã¾ãªãæã¯ãªã
å®ã¯ãããã ãã§ããªãã®å²åã§ãä¾å¤ã®åå ãããã£ãããã¾ãã
ãä¾å¤ã¯ã©ã¹åãã¯æ°ãå©ãã¦ããã°ãã¯ã©ã¹åããã®ã¾ã¾åå ã ã£ãããã¾ãããä¾å¤ã¡ãã»ã¼ã¸ããæ°ãå©ãã¦ããã°ã大ä½ããã ãã§åå ããããã¾ãã
ãããèªã¾ãªãã§ãããã°ãããªãã¦ããªãã¦æéããã£ãããªãï¼
åé¡ã¯ããã«è§£æ±ºããå¯è½æ§ãããã¾ããããã ãä¸åã§ããã®ã§ãã
ããã«ãã¹ã¿ãã¯ãã¬ã¼ã¹ãè¦ã¦ãçºçããç®æ(ããã°ã©ã )ãç¹å®ãããA-1ãã§å¾ãæ å ±ã¨ä»ãåãããããããã«è§£æ±ºããå¯è½æ§ãåå¢ãã¾ãã
ãããèªã¾ãªãã§ãããã°ãããªãã¦ããªãã¦æéããã£ãããªãï¼
ããã«ãéçºä¸ã§ããã°ãããã°ãã°ãè¦ãã°ãä¾å¤ãçºçããã¾ã§ã«ã©ããã£ãéã®ãã辿ã£ã¦ãã©ããã£ããã¼ã¿ãåãæ±ã£ã¦ããã®ãããããã¾ããããã§ãA-1ãã¨ãA-2ãã§å¾ãæ å ±ã¨ä»ãåãããã...
ãããèªã¾ãªãã§ãããã°ãããªãã¦ããªãã¦æéã...
ãã®ãA-1ãã¨ãA-2ãã¨ãA-3ãã®æé ã¯ããããã¬ãèµ·åãããããå ã«ãå¿ ããè¡ãã¹ãã§ãã
ã¨ã©ã¼ã¡ãã»ã¼ã¸ã§ã°ã°ã£ã¦ãOK
ã¾ããã¨ã©ã¼ã¡ãã»ã¼ã¸ã§ãã®ã¾ã¾ã°ã°ã£ã¦ãããã§ãããããã¨ä¸ã®å 輩æ¹ããåãåé¡ã«ééãã¦ããããããã¾ãããããºããªè§£çã§ã¯ãªãã¦ãå°ãªãã¨ããã³ãã«ãªãããããã¾ããã(ãºããªã§ãªãå¯è½æ§ãå¿ãã¦ã¯ããã¾ãããï¼)
ã¾ãã¯ãããã£ã¨è¨é²ãã¾ãããï¼
ãããã¨ã©ã¼ã¡ãã»ã¼ã¸ãèªãã§ãããã¨ã¯ããããªãããããéãéãã¦ãããã次ã®ã¹ãããã¸ã
A-4. ä¾å¤ã¯ã©ã¹åã»ä¾å¤ã¡ãã»ã¼ã¸ ãã»ã¹ã¿ãã¯ãã¬ã¼ã¹ã»ãããã°ãã°ãè¨é² A-5. åå ç¹å®ã®ããã®æ å ±ã足ãã¦ãªããã°ããããã°åºå A-6. ããã§ãããããªãå ´åã¯ãããã¬ãèµ·å
ãA-4ãã¯ä»çµã¿æ¬¡ç¬¬ã§ãããéè¦ã§ãã
ãA-1ãããA-2ãã®åã§ãããã§ãã
ã¨ããã®ã¯ã
ãã®ä¾å¤ãåç¾ããªããããããªã
ããã§ãã
åç¾ããªãå ´åãæåã®çºçæã®æ å ±ãé ¼ãã«ãªãã¾ãããããããæ®ã£ã¦ãªãã¨ã話ã«ãªããªãããã§ããä»çµã¿ã§ãã°ãã¡ã¤ã«ã«æ®ã£ã¦ãã¨ãDBã«æ®ã£ã¦ãã¨ãããã°è¯ãã®ã§ãããããã§ãªãç°å¢ã®å ´åã¯ä¾å¤ãçºçããããã¨ããããããã¨ããã¹ãã¨ãã£ã¿èµ·åãã¦ãã©ããã®ããã¹ãã«è»¢è¼ãã¦ããã¾ãããã
æ¬çªç°å¢ã§çºçããä¸å ·åã®ç»é¢ããã¨ã£ãã«ãã³ãããã®ã¨åããããªè©±ã§ããåç¾ããªãã£ã¦ãããã£ããã£ãã¨ãã®ã¨ã©ã¼ããªããï¼ããªãã¦æ°åææªã§ãã
ã¾ãããã°ãã¡ã¤ã«ã«æ®ã£ã¦ããã«ãã¦ããã¡ãã£ã¨ã§ãé·å¼ãããã¨æã£ãããæ§ãã¦ããã¨ããã§ããããããã£ããã£ãã®ãã°ããä¸åã¿ãããã¨ããã£ã¦ãã¾ããã°ãã¡ã¤ã«ã®ä¸ããæ¢ãã¨ããåé¡è§£æ±ºã®æèãé»å®³ããä¸å ã§ãã
ããããããã°ãå å®ããã¾ããã
ãA-5ããéè¦ã§ããããããã£é£ã°ãã¦ããããã¬ãèµ·åãã人ãããè¦æãã¾ããããããã°ãã°ãè¦ã¦ãããããªãã£ã¦ããã®ã¯ããã®ã¢ããªã®ããã°ã©ã ããããã°ãã°ã®åºåè¦ä»¶ãæºããã¦ããªãã¨ãããã¨ã§ãã(ä¾å¤ã¡ãã»ã¼ã¸ãåæ§)
ããã®å¤æ°ã®å¤ãããããã°åå ããããã
ã£ã¦ã¨ãã«ãããã¬ã§è¦ãããããªãã¦ãlogger.debug(...); ãå ¥ãã¾ããããã§ããã®ãã°ãã¾ãå¥ã®ä¾å¤ã®ã¨ãã«å½¹ã«ç«ã¤ã®ã§ãã(è£è¶³ãè¨äºã®æå¾ã«è¿½è¨ãã¾ãã)
ãA-5ãã¯ããç¨åº¦ã¯ãä»çµã¿ã§å¸åãããã¨ã大åã§ããå ±éé¨åãä½ã人ã®ä½æ¥ã«ãªãã¾ãããFilterãAOPãªã©ã§ããç¨åº¦éè¦ãªã®ã¯ããã©ã«ãã§åºåãããããã«ãã¦ããã¨ããã§ãã
ãã ãããã°ã¯ã¡ããã¨ã綺éºã«ãåºãã¾ããã
ãã°ãæ±ãã¨éçºè ã¯ãã°ãè¦ãã®ãå«ã«ãªã£ã¦ãã¾ãã¾ãããã
å¾ã¯ããã¬ã¼ã ã¯ã¼ã¯ããã®è²¬åãããã¾ãããã°ã®åºåç¶æ³ããã¬ã¼ã ã¯ã¼ã¯ã®é¸æè¦å ã®ä¸ã¤ã¨ãã¦ãæããã®ã大äºã§ããè¦ãç®ã®æ´¾æãã«ç®ã奪ãããããããã£ãå°å³ãªã¨ããããã£ã¡ãæ¼ããã¦ããã¬ã¼ã ã¯ã¼ã¯ãé¸ã¶ã®ãå®ã¯ã¨ã¦ã大äºãªã®ã§ãã
ä¾ãã°ãDBFluteã§ã¯ãããã°ãã°ã§åºåããSQLã«ã¯ãæé«ã®ãã ããã注å
¥ãã¦ãã¾ãã
ã=> ãããã°ãã° | DBFlute
Webå¨ããæ¼ãããLastaFluteã ã¨ããããªããã ããã®ãã°ãã
-> ãã°ã«ãã ããLastaFlute | DBFlute
æå¾ã®æå¾ã§ãã³ãã¤ã³ããããã¬
ã§ãæå¾ã«ãA-6ãã§ãã
ããã¾ã§ã®æé ã§ãã©ããã¦ãåå ãæ´ããªãã¨ãã«ãã§ããããã¾ã§ããã°ãã©ãã BreakPoint ã«ããã°ããã®ããä½ã®å¤æ°ãè¦ããã°ãããã®ããªã©ãããããã£ã¦ãã®ã§ã¯ãªãã§ããããï¼
ããã¨ããããã¬ã§ã®ãã³ãã¯ã³ã¹ããããã¤ã¨ãã§ã¯ãªããããªããã³ãã¤ã³ãã§ç´ æ©ããããã°ãã§ããã¯ãã§ãã
ãããã°æèã®æµã
å®ã¯ jflute ã¯ãä»ã¾ã§ã»ã¨ãã©ãããã¬ã使ã£ããã¨ãããã¾ãããé·ãéæ¥åã¢ããªã§ããã°ã©ãã³ã°ããã£ã¦ãã¾ããããå®éä¸è¨æé ãæ¯åº¦æ¯åº¦ã¿ã³ã¿ã³ã¨ããªãã¨ããA-6ãã¾ã§ãã¾ãå°éããªãã®ã§ããæ å ±ã足ããªããã ã£ãããæ å ±ãå 足ãããããã«ä¾å¤ã¡ãã»ã¼ã¸ããããã°ãã°ãå®è£ ãç´ãã¾ããããã¨ããã®ã¨ããA-5ãã§è§£æ±ºãããããã®å¾ã®å¥ã®ä¾å¤ã®ã¨ãã¯ãA-3ããããã§è§£æ±ºãã¾ãã(ãã¨ãããããå®è£ ããªããããã¯åºãã¦ãããæ¹ãè¯ãããããªããã¨ããããããããã°ãã°ãåºãã¾ã)
ãªãã§ãããã§ãã ã¨ããã¯ããã§ãã¤ãºã«ãªãã®ã§ããã¬ã¼ã ã¯ã¼ã¯ã®åºããã®ã¨åå¥ã®ãã¸ãã¯ãåºããã®ããã°ãçºãã¦ãã©ã³ã¹ããå°éããããã®æ å ±ãåºãã¾ãã
ç¡è«ãä»äººã®æ¸ããã½ã¼ã¹ã¨ãããã¾ãããããªãç°å¢ã ã¨ãã ã¨ããããã£ããã¨ãã§ããªãã¨ããã®ã¯ç¢ºãã«ããã¾ããã©ãå°ãªãã¨ãDBFluteã®ããã°ã©ã ã§å¹¾åº¦ã¨ãªããããã°ä½æ¥ãç¹°ãè¿ãã¦ãã¾ããããä¸åº¦ããããã¬ã使ã£ããã¨ã¯ããã¾ãããä¾å¤ãçºçããªãä¸å ·åã®ãããã°ã¨ããããã®ã§ãä¸æ¦ã«ä¸è¨ã®æé éãã«ã¯ãªãã¾ããããçºæ³ã¯å¤ãããªãã§ããæ·¡ã ã¨è¦ãã¹ããã®ãè¦ã¦ãããã¨ãªãã°ãããã¬ã
ãããã°ä½æ¥ã®æé ã¨ãããã¨ã§æ¸ããã¦é ãã¾ãããå®ã¯æ¬å½ã¯ãã£ã¨ç´°ããè¦ç´ ãå¹¾ã¤ãããã®ã§ãããã¾ããããã°ã©ã ããå¾ãæ å ±ãè¦ã¦ãæªããããªå¤é¨è¦å (DBãªã©)ãçãåå é åãç¹å®ãããªã©ã®ããããã°æèã®æµãããªã©è²ã ããã®ã§ããããã ã§ããé·æãªã®ã«ãã£ã¨é·æã«ãªã£ã¦ãã¾ãã®ã§ãè²ã å²æããã¦ãã¾ãã
ã¨ã«ãããè¦å ãéãã¦ãæ¨æ¸¬ãã¦ã仮説æ¤è¨¼ã®ç¹°ãè¿ããããã¦ãåé¡è§£æ±ºã®ããã®ã½ãªã¥ã¼ã·ã§ã³ãèããã
ããã«å°½ãã¾ããï¼
// ä¸ã¤ã®åé¡ã«å¯¾ãã解決æ³ã¯åä¸ã¨ã¯éããªã
http://d.hatena.ne.jp/jflute/20110215/solutions
B. ã¹ã¿ãã¯ãã¬ã¼ã¹ã®è¦æ¹ãããããªã
ãã¦ãã¹ã¿ãã¯ãã¬ã¼ã¹ã®è¦æ¹ã§ãã
java.lang.NullPointerException at xxx.jp.DemoTest.test_xxx(DemoTest.java:804) at abc.SeaImpl.invokeTest(SeaImpl:56) at abc.SeaImpl.invoke(SeaImpl.java:39) at abc.LandImpl.callSea(LandImpl.java:25) ...
ä¸çªæåã®ã¯ã©ã¹åã¯çºçããä¾å¤ã¯ã©ã¹(NullPointerException)ã§ããä¾å¤ã¡ãã»ã¼ã¸ãåå¨ããå ´åã¯ãåãè¡ã«ç¶ãã¦è¡¨ç¤ºããã¾ãã
ãã®ä¸ã®at/at/atã«ã¦ãä¸ããé ã«å¼ã°ããã¡ã½ããã表示ããã¾ããSeaImpl.invokeTest()ã¨ããã¡ã½ãããDemoTest.test_xxx()ãå¼ã³åºããã®ããããã¾ãã
(SeaImpl.java:39)ã®ã39ãã¯ã½ã¼ã¹ä¸ã®è¡æ°ã§ãã次ã®ã¡ã½ãããå¼ã³åºãã¦ããå¦çãæ¸ãããè¡æ°ã§ãã(Native Method)ã¨ããããã«æ®å¿µãªããè¡æ°ãããããªãå ´åãããã¾ããä¸çªä¸ã®(DemoTest.java:804) ã¯ãããã¡ã½ãããå¼ã³åºãã¦ãã¾ããã®ã§ãããã¯ã804è¡ç®ã§ä¾å¤ãçºçãããã¨ãããã¨ã表ãã¾ãã
ã§ã¯ãããã°ãã¦ã¿ã¾ããããããã(DemoTest.java:804) ããpmb.setMemberName("S");ãã¨ããè¡ã ã¨ãã¾ããä¾å¤ã¯ NullPointerException ã§ããåå ã¯ä¸ã¤ã§ãããpmbãã¨ããå¤æ°ãnullãªã®ã§ããããã¾ã§ãããã°å¾ã¯ããpmbããªãã§nullãªã®ãããæ¢ãã°ããã ãã§ããåç´ãªå ´åã¯æ¬å½ã«ããã«è§£æ±ºããã§ãããããã®ãããªã¹ã¿ãã¯ãã¬ã¼ã¹ãæ´»ç¨ãã¾ãã
ããäºã¤ãã¹ã¿ãã¯ãã¬ã¼ã¹ãè¦ãã¨ãã®æ³¨æç¹ã§ãã
ä¸ã¤ç®ãä¾å¤çºçå°ç¹ãã¢ããªã®ããã°ã©ã ã¨ã¯éãã¾ãããæ¨æºAPIã®ä¸ã ã£ããããã¬ã¼ã ã¯ã¼ã¯å é¨ã ã£ããããã®å ´åã§ããã¹ã¿ãã¯ãã¬ã¼ã¹ã®éä¸ã«ã¢ããªã®ã¯ã©ã¹ã»ã¡ã½ãããããã¯ãã§ãã®ã§ããããæ¢ãã¦ä¸ããã
äºã¤ç®ãä¾å¤ã¯è¤æ°ã®ä¾å¤ã«ã©ããããã¦ããå¯è½æ§ãããã¾ãã
java.lang.IllegalStateException: The pmb is null! at xxx.jp.DemoTest.test_xxx(DemoTest.java:807) at abc.SeaImpl.invokeTest(SeaImpl.java:56) at abc.SeaImpl.invoke(SeaImpl.java:39) at abc.LandImpl.callSea(LandImpl.java:25) ... Caused by: java.lang.NullPointerException at xxx.jp.DemoTest.test_xxx_Tx(DemoTest.java:805) ... 18 more
ä¸çªä¸ã®ã¹ã¿ãã¯ãã¬ã¼ã¹ã ãã§ãªããé£éãã¦ããã¹ã¿ãã¯ãã¬ã¼ã¹ãã¡ããã¨è¿½ã£ã¦ããã®ãéè¦ã§ããããã¯ä¾å¤ã¯ã©ã¹ã»ä¾å¤ã¡ãã»ã¼ã¸ã«ãåããã¨ãè¨ãã¾ããä¾å¤ã¡ãã»ã¼ã¸ã¯ä¸ã¤ã ãã¨ã¯éãã¾ããã
ã追è¨ã
ã... 18 moreããä½ãªã®ãã«ã¤ãã¦ã¯
-> 19.2.2 ã¹ã¿ãã¯ãã¬ã¼ã¹ã®åææ¹æ³(ãã®2)
ãããªã«æ°ã«ããå¿ è¦ã¯ãªãã§ãããã©ããã¦ãæ°ã«ãªãæ¹ã¯è¦ã¦ããã¾ãããã
ã追è¨: 2013/03/22ã
ã¹ã¿ãã¯ãã¬ã¼ã¹ã«é¢ãã¦ã¯ããã¡ãã®è¨äºã§ã詳ããæ¸ãã¾ããã
ã=> Java - Beginner's Hint | DBFlute
ãããã«
æ¬å½ã«ä¸çªä¼ããããã¨ãå®ã¯ããã ã£ãããã¾ãããããã®ãã¨ãå 輩ãå¾è¼©ã«ä¸åº¦ã¯ä¼ãã¦ãããã®ãã大åã ã¨æãã¾ããã
èªåãæ¬å½ã«æåã¯ãã¯ãããããªãã£ãã§ããæ°äººã®ã¨ãã«ä¸å¸ã«ä¸åº¦ãStackTraceè¦ãããã¨ä¸åããã¦èããããã«ãªã£ã¦ããã®å¾ãä¸å¸ã®ãããã°ãã¦ã姿ãè¦ã¦ãããããããã¨è§£æ±ºãæ©ããã ãªããã¨å¦ãã ãã®ã§ãã
è¨èã§ä¼ããã®ã大äºã§ãããä¸ç·ã«ãããã°ãã¦ããã¦ããã®ãããã°æé ãä½æããã¦ãããã®ãããããããªããã¨ï¼(ãã¢ãããªãã¬ãã¢ãããã°ããª)
...
ã追è¨(è£è¶³)ã
ãããã¬ã®ä½¿ããªãç°å¢ã»ç¶æ³ããã¤ãæ¥ã¦ããã°ãèªãã§é å¼µã人ããã¾ããçµåãã¹ãã¼ã¸ã³ã°ã§(æ¬çªã§ã)ã©ããã¦ãã£ã¦ã¨ããä¸ç¬ãããã°ã¬ãã«ã«ãã¦éç¨ãã¦ããããã°ãã°ãæ¡åãã¦è§£æãããã¨ãããã¾ãã
Log4jã®SmtpAppenderã®ãããã°ãã°ãã£ãã·ã¥æ©è½ã使ã£ã¦ãã¨ã©ã¼ã¡ã¼ã«ã«ä¾å¤æ å ±ã¨ä¸ç·ã«çºçç´åã¾ã§ã®ãããã°ãã°ãä»ä¸ãããããªä»çµã¿ã«ãã¦ãæäºã®éã«è§£æãããã¨ãããã¾ãã
èªåãåºåãããããã°ãã°ããã¤ã誰ããèªãå¯è½æ§ãããã¾ããããããããã綺éºã«ãããã®ã¯ã½ã¼ã¹ã³ã¼ãã ãã§ã¯ãªãã®ã§ãã
ããããã¨ãã®ããã«ãA-5ãããªããã大äºã§ãã