2011-02-13 2 views
2

5つのクラスを作成しました。これは簡単にGUIを作成し、参加者を会議に録音する目的に役立ちます。私はパネルを構築し、それらを追加しました、FocusListeners、ActionListeners、ItemListeners。プログラムは正常にコンパイルされますが、NoClassDefFoundErrorでクラッシュします。

私が集めることから、私がクラッシュしたときに出てくるメッセージはクラスパスに関連していますが、それを修正する方法は本当に分かりません。私がそこにいることを知っている

java.lang.NoClassDefFoundError: ConferenceHandler 
    at ConferenceGUI.buildButtonPanel(ConferenceGUI.java:63) 
    at ConferenceGUI.<init>(ConferenceGUI.java:33) 
    at IsItWorking.<init>(IsItWorking.java:16) 
    at IsItWorking.main(IsItWorking.java:28) 
Caused by: java.lang.ClassNotFoundException: ConferenceHandler 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
    at ConferenceGUI.buildButtonPanel(ConferenceGUI.java:63) 
    at ConferenceGUI.<init>(ConferenceGUI.java:33) 
    at IsItWorking.<init>(IsItWorking.java:16) 
    at IsItWorking.main(IsItWorking.java:28) 
    at __SHELL0.run(__SHELL0.java:6) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at bluej.runtime.ExecServer$3.run(ExecServer.java:774) 

private void buildButtonPanel() 
{ 
    //create the buttonpanel 
    buttonPanel = new JPanel(new FlowLayout()); 
    //create the buttons 
    calculate = new JButton("Calculate Charges"); 
    clear = new JButton ("Clear"); 
    //add listeners to the buttons 
    ConferenceHandler handler = new ConferenceHandler(this); 
    calculate.addActionListener(handler);    //crash occurs on this line 
    clear.addActionListener(handler); 
    //create a text area 
    JTextArea textArea = new JTextArea(5,30); 
    textArea.setLineWrap(true); textArea.setWrapStyleWord(true); 
    //add a scrollbar to the textarea 
    JScrollPane scroll = new JScrollPane (textArea); 
    //add everything to the buttonpanel 
    buttonPanel.add(calculate); buttonPanel.add(clear); buttonPanel.add(scroll); 
} 

私が取得クラッシュメッセージ:ここにクラッシュが発生したコードは(私は私のパネルのための2つのボタンのActionListenerにを追加したときにそれがあります多くの経験を持つ、ここで多くの人々、そして私はこの1つ上のinterwebs上の任意のヘルプを見つけることができないところConferenceHandlerを見つける(と私は愚かな響きのために謝罪するためにJavaを伝えるためとして

+3

'-Classpath'引数を使って' ConferenceHandler'がどこにあるかをjavaに教えましたか? 'java -classpath/path/to/directory/with/compiled/ConferenceHandler program'のように – birryree

+0

宿題タグについては十分に公正ですが、私はそれを使わずにいくつかの質問を投稿しています。 JavaにConferenceHandlerがどこにあるかを教えてください(そして、私は愚かな宿題について質問しています)。Blue Jayを使用しています。メインをクリックしてプログラムを実行するだけです。コマンドラインからこれをどうやって行うのか分かりません。 – unit

+1

私はBlueJの部分(決してそれを使用していない)については分かりませんが、すべてのクラスをパッケージに入れたらどうですか?それはそれが正常に動作する方法です。技術的には、パッケージのないクラスはパッケージ内のクラスには見えません。 – BalusC

答えて

2

- 。宿題の質問がで尋ねられますnewbs)私はBlue Jayを使用しています。私がしなければならないことは、メインをクリックすることだけです。プログラムが実行されます。コマンドラインからこれをどうやって行うのか分かりません。

表示される場所は、javaコマンドのマニュアルに記載されています。例えばhere。クラスパスとそれを設定するさまざまな方法について話していることに特に注意してください。また、this pageも読んでください。


私はそれをクラスパスに問題があったことを認識し、関係なく、私が何をしたか、私はそれを修正することができませんでした。だから私は元のクラスをすべて取り、それらをすべて新しいフォルダに貼り付けました。それは魅力的なものでした。

これはVoodooソリューションです。あなたは本当に問題を理解する必要があります。スタックトレースはそうでないことを示し

:そのために

は、上記のいくつかのコメントを再訪することができます。彼らは無包装です(言い換えれば、BlueJが文字通り何とかあなたに言っているのであれば、デフォルトのパッケージにあります)。 - @BalusC

私は.....それが何を意味するのか知っていたい - 意味は何@BalusC @unit

は、スタックトレースは、それがしようとしていたことをあなたのクラスの完全な名前を告げることです負荷。

... 
    Caused by: java.lang.ClassNotFoundException: ConferenceHandler 
    ... 

そして、(この場合)フルネームはConsoleHandler ...ないsome.pkg.ConsoleHandlerです。

完全にはっきりしないことは、これが起こっている理由ですが、私が疑いと言っていたのは、実際にあなたが探していたソースコードと一致しない古いファイル.classを実行していたということです。そして、あなたのVoodooソリューションは、古い.classファイルを新しいものに置き換えることによって、これを "固定"することができます。しかし、そうであれば、ビルド/デプロイメントの方法に何が間違っているのかを理解する必要があります。さもなければ、あなたはこのようなことを何度も何度も繰り返すでしょう。

+0

クラスパスに問題があることに気がつきました。私が何をしても、問題を解決できませんでした。だから私は元のクラスをすべて取り、それらをすべて新しいフォルダに貼り付けました。それは魅力的なものでした。 – unit