• ベストアンサー

正常にビルドされたのに起動されません

こんにちは。 私は現在、大学の卒業制作でiアプリを作っています。 問題が発生したので、どなたかご指導をお願いいたします。 i-appli Development Kitで、 --- ADFチェック 開始 --- --- ADFチェック 終了 --- --- ADF/トラステッド動作設定チェック 開始 --- --- ADF/トラステッド動作設定チェック 終了 --- と、正常にビルドされたにも関わらず、起動ボタンを押すと、 Main :java.lang.NullPointerException MainPage4 java.lang.NullPointerException at com.nttdocomo.ui.Panel.add(+17) at MainPage4.start(+7980) com.nttdocomo.ui.Panel というメッセージが表示され、エミュレータに何も映りません…。ちなみにMainPage4はプロジェクトのタイトルです。 なぜなのでしょうか?初心者ですので、どなたか分かりやすく教えてくださるとうれしいです!よろしくお願いします!

  • Java
  • 回答数6
  • ありがとう数6

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

  • ベストアンサー
  • zozy
  • ベストアンサー率60% (20/33)
回答No.4

まず、スクラッチパッドの容量の限界は引き伸ばしても10kbまでです。 サイズがオーバーしてないか確認しましょう。 次に構造の問題なのですが、GUIは基本的に階層構造になってます。 なので、ただMainPage4のstartメソッドで Panel p=new Panel(); とした場合では、MainPage4とPanel間にデータの受け渡しが一切ないため階層関係はできません。 MainPage4 |---------Panel←ここを参照したい しかし、現状では MainPage4 |---------Panel Panel←ここに新しいオブジェクトを作って参照している この問題の解決策としてPanelクラスにMainPage4クラスのデータを渡しましょう。 オブジェクト指向でいうところの"継承"を明示的にやっていることになります。 MainPage4クラス public class MainPage4 extends IApplication implements ComponentListener{ Panel1 p1; public void start(){     //thisはMainPage4のデータ p1=new Panel1(this); } } Panel1クラス public class Panel1 extends Panel{ MainPage4 mp4; public Panel1(MainPage4 mp4){ this.mp4=mp4; } } これでMainPage4がPanel1を持っている状態になります。(いわゆる、Has-is関係) そして、パネルの遷移ですがGUIの構造としては、MainPage4はパネルの遷移をするだけのクラスになります。 通常のJavaのメインクラスもクラスの呼び出しとかだけで実際に処理は行ってないですよね? そこでmainPage4で用意すべき変数とメソッドは以下のものとなります。 ・指定したパネルに切り替えるためのフラグ(boolean) ・他のクラスからフラグを切り替えるためのセッターメソッド ・フラグがtrueならパネル切り替えを行うメソッド private boolean changeP1=true,changeP2,...changeP15; Panel1 p1; . . Panel15 p15; public void start(){ //パネル遷移しても状態を維持したいのならここで //パネル遷移後に遷移したパネルを初期化したい場合はchangePanel内で p1=new Panel1(this); . . p15=new Panel15(this); change(); } public void change(){ if(changeP1==true){ //ここでfalseにしないと無限ループ changePanel1(false); //Panel1を画面に表示 Display.setCurrent(p1); } . . } //外部からフラグを設定するためのセッターメソッド public void changePanel1(boolean changeP1){ this.changeP1=changeP1; } 外部クラスからPanel1に遷移をするさいは mp4.changePanel1(true); mp4.change(); 理解しづらい点、不足な点などございましたら、返信ください。

pocomin
質問者

お礼

>>zozyさん わかりやすく教えてくださり、ありがとうございます! SPsizeを10000に設定したら、正常に画面が映りました☆ でも、不思議なことに、映らなかったときのプロジェクトのSPsizeを10000にいきなりあげても正常に起動されなかったんですけど、だんだんScratchPadを増やし、それに伴って徐々にSPsizeを引き上げていったら成功しました。プロジェクトの中身は全く変わらないのに、手順が違うと上手く動かないのかなと思いました。でも、解決したので良かったです♪これで、先に進めます! ただ、新たな問題が浮上したので、よろしければ、また教えて頂けるとうれしいです!何度も申し訳ありません…。 ScratchPadを使用する際、TextBoxからLabelに文字に移すのは String SaveText = TextBox.getText(); のような形でできるのですが、 ListBoxから、選択された項目をLabelに移すにはどうしたら良いのでしょうか?一応、ListBox.CHOICEを使っています。 一度、 String SaveText = ListBox.getText(); としたら、エラーになりました。ちなみに、変数は実際のものと異なりますので、変えて答えていただいて大丈夫です! ご存じでしたら、またお願いいたします!

その他の回答 (5)

  • zozy
  • ベストアンサー率60% (20/33)
回答No.6

DojaのAPIをよく確認しましょう↓ http://www.tomicom.ac.jp/~koba/doja5/jguidefordoja5api/javadoc/overview-summary.html com.nttdocomo.ui.ListBoxにふさわしいAPIがあると思います。

pocomin
質問者

お礼

ありがとうございます! getItemとgetSelectedIndexを使ったら、できました♪

  • inu_poti
  • ベストアンサー率66% (4/6)
回答No.5

おなじようなerrorのでるソースファイル書いてみました。 import com.nttdocomo.ui.*; public class MainPage4 extends IApplication { Label label; public void start() { Panel panel=new Panel(); panel.add(label); Display.setCurrent(panel); } } このソースで出たエラーは Main :java.lang.NullPointerException MainPage4 java.lang.NullPointerException at com.nttdocomo.ui.Panel.add(+17) at MainPage4.start(+15) com.nttdocomo.ui.Panel です。 これは、Labelが初期化されてないせいですがーー なにかコンポーネントの初期化をわすれてません。なお、このソースは public class MainPage4 extends IApplication { Label label=new Label("AAAA"); public void start() { Panel panel=new Panel(); panel.add(label); Display.setCurrent(panel); } } となおしたら、正常に起動しました、

pocomin
質問者

お礼

ありがとうございます! SPsizeを変更したら、うまくいきました☆

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

+7980 が「7980バイト目」という可能性ってありませんか? まあ, それがわかってどうなるものでもないような気はしますが. というか, 「卒業制作」というなら大学の教員に聞けばいいのでは?

  • BleuLune
  • ベストアンサー率57% (15/26)
回答No.2

Exceptionの内容みたままかと。 1:>Main :java.lang.NullPointerException MainPage4 2:>java.lang.NullPointerException 3:>at com.nttdocomo.ui.Panel.add(+17) 4:>at MainPage4.start(+7980) 1:MainPage4でNullPointerExceptionが発生しました。 2:例外の種類はNullPointerExceptionです。 3:例外が発生した箇所はcom.nttdocomo.ui.Panel.addの(+17)←たぶん行数だと思う。 4:3行目の処理の例外発生箇所はMainPage4.start(+7980)です。 コンパイルに問題はないとの事なので、単純に「3:」で参照されるオブジェクトがnullなのでしょう。 だから、そのオブジェクトが参照されるようにすればいいと思いますよ。参照されるオブジェクトは本当にnewされていますか?

pocomin
質問者

補足

>>BleuLuneさん わかりやすくご指摘していただき、ありがとうございます! 早速17行目を確認してみたところ、オブジェクトはnewで生成されてました…。何度も確認したんですけど、きちんと参照もされていると思います。それと、エラーのメッセージのat MainPage4.start(+7980)が、7980行もないのでよくわかりませんでした。

  • zozy
  • ベストアンサー率60% (20/33)
回答No.1

エラー内容だけでは、よくわからないので見せられる範囲でソースなどを貼ってもらえるとありがたいです。 エラー内容からすると、MainPage4のstart()内で Panelを配置してるようだけど、うまく配置できてない というところでしょう。 なんにせよ、Dojaのエラーコードは見づらいです。 ここからは逆に質問ですが、 Q1.ページ遷移をする設計構造ですか? (フレームへのパネルまたはキャンバスの追加のしかたが 間違ってるかもしれません。) Q2.ADFの設定を正しくしてあるか? AppName=プロジェクト名.jar PackageURL=AppNameと同じ AppClass=IApplicationを継承してるクラスのパス プロジェクトA内のパッケージB内のMainFrameだったら B.MainFrameになります。

pocomin
質問者

補足

>>zozyさん わかりやすいご回答ありがとうございます! ADFの設定は大丈夫でした! 私が作っているプロジェクトはzozyさんのおっしゃるとおり、パネルのなかのリストボックスやボタンのコンポーネントを使ってページを切り替えていく仕組みです。 大ざっぱにソースコードをのせます。申し訳ないのですが、実際のものとは異なり、流れだけご説明させてください!ご指導をお願いいたします。 import com.nttdocomo.ui.*; import javax.microedition.io.*; import java.io.*; public class MainPage4 extends IApplication implements ComponentListener { private Panel //パネルを15こ用意 private ListBox //SINGLE_SELECTやCHOICEを用意 private Label private TextBox /*ユーザーが入力したtextをScratchPadを使ってlabelに入れる仕組み*/ private Button //パネル遷移のためのボタン private HTMLLayout public void start() { //ここからパネルのクラスを全て書き込んであります //Label,ListBox,Buttonがあります panel = new Panel(); //以下省略 //ここで、一番最初に表示したいパネルを表示します Display.setCurrent(panel); }  // その後、アクションリスナーを実装します public void componentAction(Component source, int type, int param) { /*ボタンが押されたり、リストボックスでSELECTION_CHANGEDされたら違うパネルを表示します。*/ //それから、ScratchPadを使用する旨を書き込みます。 } //ここで、ComponentListenerのカッコを閉じます //最後はScratchPadの中身です。 /*全部で39このScratchPadを書き込み、読み込みでそれぞれ別個に用意しました。("scratchpad:///0;pos=0")から("scratchpad:///0;pos=38")までです。*/ /*先ほど上で用意したTextBoxから3ケタの半角数字を空白のlabelにsetTextします*/ } なんとなく、ScratchPadを追加して上書き保存した後から、エミュレータで表示されなくなった気がします…。最初、ScratchPadが5こ位のときは大丈夫だったんですけど、その後ScratchPadを増やしたらこのような問題が発生してしまったような感じがします。正常にビルドされているので、よく分からないのですが…。

関連するQ&A

  • NullpointerExceptionエラー

    dojaでアプリを作成しようとしたところ下記エラーが出ました。 いろいろ調べたのですが原因がわかりません。 どなたかご教授お願いします。 ---------------- java.lang.NullPointerException at com.nttdocomo.ui.GraphicsImpl.drawImage(+75) at com.nttdocomo.ui.FrameGraphics.drawImage(+7) at C.paint(+34) at com.nttdocomo.ui.Display$1.run(+186) C ---------------- ちなみにjavaは初心者です。

    • ベストアンサー
    • Java
  • DoJa5.0 キャンバスの中にパネルは埋め込めますか?

    こんにちは!iアプリを製作している初心者です。 キャンバスとパネルを同時に使ったアプリを作りたいのですが、うまくいきません…。リストボックスのパネルをキャンバスに表示しようと思っています。 私が作ったソースコードの問題の部分を書いたので、どなたかご指導をお願いします(>△<) (1)MainPage.java import com.nttdocomo.ui.*; public class MainPage extends IApplication { //アプリの開始 public void start() { MainCanvas canvas=new MainCanvas(); Display.setCurrent(canvas); canvas.exe(); } } (2)MainCanvas.java import com.nttdocomo.ui.*; class MainCanvas extends Canvas { Graphics g=getGraphics(); public MainCanvas() { while(true) { //画面の描画 g.lock(); ~省略~ g.unlock(true); } MainPanel pl =new MainPanel(); Display.setCurrent(pl); } //描画 public void paint(Graphics g) {} } (3)MainPanel.java import com.nttdocomo.ui.*; class MainPanel extends Panel { ListBox lb1,lb2,lb3,lb4; //リストボックス public MainPanel() { //リストボックス作成 lb1 = new ListBox(ListBox.SINGLE_SELECT); lb1.append("選択1"); add(lb1); ~省略~ lb4 = new ListBox(ListBox.SINGLE_SELECT); lb4.append("選択4"); add(lb4); } } このように、(2)のMainCanvas.javaに(3)のMainPanel.javaをいったん埋め込んで、最終的に(1)のMainPage.javaでまとめて表示しようと思っています。ですが、(2)のMainCanvas.javaのMainPanel pl =new MainPanel();Display.setCurrent(pl);の部分でエラーが出て、読み込んでくれません…(;△;)何がおかしいのでしょうか?それから、今後はリストボックスにコンポーネントリスナーも付けようと思っています。

  • firefox2.0 JAVAエラーが出ます

    JAVA(アプレット?)を使用したページを表示しようとするとエラーが出て止まってしまいます。そのときに出るエラーの文は java.lang.NullPointerException Javaコンソールを開くと Java Plug-in 1.6.0_03 使用中の JRE のバージョン 1.6.0_03 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Documents and Settings\Administ java.lang.NullPointerException at com.sun.deploy.net.proxy.DynamicProxyManager.reset(Unknown Source) at com.sun.deploy.net.proxy.DeployProxySelector.reset(Unknown Source) at sun.plugin.AppletViewer.initEnvironment(Unknown Source) と出ます。何度再インストールしても治りません。どうにかなりませんか?

  • iアプリの実機起動時に「ソフトに継続動作出来ない障害が発生しました」

    エミュレーター上では正常に動作するのですが、自分のケータイ(P703iν,Doja4.1対応)に自作アプリをダウンロードして起動したときに、「ソフトに継続動作出来ない障害が発生しました」というエラーがでて終了してしまいます。 トレースの結果↓ message=Uncaughtexception happened throwable=java.lang.NullPointerException throwableMessage= ちなみに友達のケータイでも試したのですが、P704i(Doja5.0)はエラー SO903i(Doja5.0)は正常に動作しました。メーカーや機種の違いなのでしょうか? 自分でも、原因究明のため下記のことを確認したのですがこれ以上に思いつくものがありません。 ・スクラッチパッドの容量オーバー P703iνのスクラッチパッド容量はjarファイルが100kbまで、jarファイル+リソースの上限が400kbなのに対し、jarファイルが69kb,resourceが88kbと明らかに余裕でした。ADFの設定は余裕を持って200kbにしました。 ・Threadを使ってるのが原因ではないか? Dojaだと、Threadはあまり推奨されていないようなので、com.nttdocomo.utilのTimerクラスで代用しましたが、おなじ結果になってしましました。 ・Doja4.1でサポートされてないAPIを使ってないか? 隅々まで確認しましたがみつかりませんでした。(商用目的のアプリなのでソースは公開できません) ・トレース内容でもあったように、nullのThrowable値をスローしてないか? 例外エラー時のスタックトレースデータなどをThrowable値として格納しているのではないかというのが自分の理解ですが、正直ここがよくわかりません。どなたかご教授してもらえるとありがたいです。。。

  • Netcool/OMNIbusの起動について

    AIXでNetcool/OMNIbusを起動したいのですが、起動コマンドnco_configを行っても、以下のメッセージが表示され起動できません。 起動操作は、XPでteratermを使いリモートでAIXを操作しています。 #nco_config Usetting XPG_SUS_ENV Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.J9VMInternals.initialize(J9VMInternals.java:216) atcom.micromuse.centralconfig.LaunchApplication.initialiseGraphics(Unknown Source) at com.micromuse.centralconfig.LaunchApplication.setGfx(Unknown Source) at com.micromuse.centralconfig.LaunchMDAApplication.mai(Unknown Source) at com.micromuse.centralconfig.LaunchApplication.main(Unknown Source) Caused by:java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operathion which requires it. at sun.awt.HeadlessToolkit.getSystemclipboard(HeadlessToolkid.java:306) at com.micromuse.centralconfig.ConfigurationContext.<clinit>(Unknown Source) at java.lang.lang.J9VMInternals.initializeImpl(Native Method) at java.lang.lang.J9VMInternals.initializeImpl(J9VMInternals.java:194) ・・・ 4 more (Caused by:java.awt.HeadlessException:) awtが原因なのでしょうか? そもそもObjictServerが起動していない為かと思い、プロセスを制御したObjictServerの開始(nco_pa_start-process ObjiectServer)コンマンドを打っても、起動しているとの返答。 AIXのsyslogを見ても特にエラーはありません。 ITスキルが低い為にNetcool/OMNIbusのマニュアルも見ても起動しない原因の大まかな切り分けもつけられない状態のです、おそらく確認してる場所も間違っていると思いますので、どうぞ助言を宜しくお願いします。

  • NullPointerExceptionについて

    tomcatとeclipseでweb開発をする初心者っです。コンソールで以下のようなエラーが出るのですが、どういう対処すればよろしいのでしょうか?ご教授お願いします。 Error occurred during initialization of VM java.lang.NullPointerException at java.util.Hashtable.hash(Unknown Source) at java.util.Hashtable.remove(Unknown Source) at java.lang.System.initProperties(Native Method) at java.lang.System.initializeSystemClass(Unknown Source) 以上よろしくお願いします。

  • CentOS4における自動起動について

    お世話になります。 CentOSにてプログラムを自動起動させたいと思っています。 rc*.dフォルダにスクリプトを作成し、サンプルプログラムが 動作することまでは確認できましたが、log4jを組み込んだところ プログラムが実行できなくなってしまいました。 #スクリプトをコマンドで実行すると、問題なく実行できました。 どなたかご教示ください。よろしくお願いします。 <エラー箇所> // 設定ファイルの読み込み DOMConfigurator.configure(パス + "log4j.xml"); <エラー内容> java.lang.ClassNotFoundException: org.apache.log4j.xml.DOMConfigurator at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 【動作環境】 CentOS4 Java6 log4j 1.2.15

    • ベストアンサー
    • Java
  • private voidなメソッドはstatic コンテキストですか

    コンパイルエラーで、 「static コンテキストから参照することはできません」 と表示されます。 ソースにstaticという文字は有りません。 private voidなメソッドはstatic コンテキストですか? [Foo.java] import com.nttdocomo.ui.*; public class Foo extends IApplication {  public void start() {   Display.setCurrent(new MyPanel());  } } class MyPanel extends Panel {  private void e() {   Bar.DShow(Dialog.DIALOG_ERROR, "", "");  } } [Bar.java] import com.nttdocomo.ui.*; public class Bar {  public void DShow(int type, String title, String body) {   Dialog d = new Dialog(type, title);   d.setText(body);   d.show();  } }

    • ベストアンサー
    • Java
  • JDBCに初めて挑戦しようとしたのですが。

    「JAVA+MySQL+Tomcatで始めるWebアプリケーション開発入門」という本でJDBCに初めて挑戦しようとしたのですが、下記のようなエラーが出てうまく実行できませんでした。 java.sql.SQLException: Access denied for user: 'Mulder@localhost' (Using passwor d: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1229) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) at com.mysql.jdbc.Connection.<init>(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :266) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at JdbcTest.main(JdbcTest.java:12) Exception in thread "main" java.lang.NullPointerException at JdbcTest.main(JdbcTest.java:24) 原因など、わかる方がいたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaがうまく起動しない?

    javaを利用して株チャートを映している、カブドットコム証券を利用しています。 javaが画面上で立ち上がるのですが、その後、画面が空白になり「エラー。クリックして詳細を確認してください」とでてしまいます。 最新版のjavaをダウンロードしなおしてみたのですが、やはり駄目です。 エラー表示には Java Plug-in 1.6.0_12 使用中の JRE のバージョン 1.6.0_12 Java HotSpot(TM) Client VM ユーザのホームディレクトリ = C:\Documents and Settings\USER ---------------------------------------------------- c: コンソールウィンドウをクリア f: ファイナライズキューのオブジェクトをファイナライズ g: ガベージコレクト h: このヘルプメッセージを表示 l: クラスローダリストをダンプ m: メモリ使用率を表示 o: トリガログ q: コンソールを非表示 r: ポリシー設定を再ロード s: システムプロパティと配備プロパティをダンプ t: スレッドリストをダンプ v: スレッドスタックをダンプ x: クラスローダキャッシュをクリア 0-5: トレースレベルを <n> に設定 ---------------------------------------------------- ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/logo/QRlogos2.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/sliderM.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/kai.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/uri.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/q.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/sin.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/hen.gif ロードされたイメージ: jar:http://kabucom.qri.jp/new_chart/kabucom/qrchartsim.jar!/icons/karute.gif Applet Version : 0.0245 java.lang.NullPointerException at model.Cycle.getDate(Cycle.java:609) at gui.DatePanel.getDate(DatePanel.java:213) at card.Header.<init>(Header.java:191) at main.ChartPanel.<init>(ChartPanel.java:147) at main.Chart.rebuildChartsAndPanels(Chart.java:290) at main.Chart.init(Chart.java:274) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 例外: java.lang.NullPointerException java.lang.NullPointerException at main.Chart.start(Chart.java:467) at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 例外: java.lang.NullPointerException とあります。 なにがおかしいのでしょうか? お教えいただきたくお願い申し上げます。

専門家に質問してみよう