質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.83%

  • Java

    12870questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Javaでパッケージを使うとエラーが出る

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 130

aiueoaiueoaiue

score 52

実現したい事

Javaでパッケージを用いたソースを記述したのですが、wrong nameとエラーが出てしまいます。パッケージの記述部分をコメントアウトすると上手くいくのですが、パッケージを使うとエラーが出る原因が分かりません。すごく初歩的なミスをしている気がするのですが(ソースのミスとかではなくファイルの置き場所的なミス)、分かる方回答お願い致します。

エラーメッセージ

java.lang.NoClassDefFoundError: kubotatsu (wrong name: kuboyama/kubotatsu)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at sun.applet.AppletClassLoader.findClass(AppletClassLoader.java:217)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.applet.AppletClassLoader.loadClass(AppletClassLoader.java:152)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at sun.applet.AppletClassLoader.loadCode(AppletClassLoader.java:626)
at sun.applet.AppletPanel.createApplet(AppletPanel.java:799)
at sun.applet.AppletPanel.runLoader(AppletPanel.java:728)
at sun.applet.AppletPanel.run(AppletPanel.java:378)
at java.lang.Thread.run(Thread.java:748)

パッケージ部分の記述

package kuboyama;

ソースコード

/*<applet code = "kubotatsu.class" width="300" height="100">
</applet>*/
//package kuboyama;

import java.applet.*;
import java.awt.*;
public class kubotatsu extends Applet{
/*フィールド変数*/
    Label lbl = new Label("ラベル");
    Checkbox cbox1 = new Checkbox("チェックボックス(true)",true);
    Checkbox cbox2 = new Checkbox("チェックボックス(false)",false);

/*メソッド*/
    @Override
    public void init(){
        setBackground(Color.lightGray);
        add(this.lbl);
        add(this.cbox1);
        add(this.cbox2);
    }
}

ディレクトリ構造のキャプチャ

イメージ説明

補足

ソースコードはkuboyamaというディレクトリの中にkubotatsu.javaという名前で入っています。
クラスファイルもkuboyamaというディレクトリの中にkubotatsu.classという名前で入っています。
kuboyamaディレクトリでjavac kubotatsu.javaとコンパイルすると、コンパイルは通ります。
同じkuboyamaディレクトリ内でappletviewer kubotatsu.javaと実行するとアプレットが初期化されていないと表示され、エラー文がコマンドプロンプトにずらずら出ます。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ngsvx

    2018/06/10 23:53

    補足にある「コンパイルは通ります」というのは、package文を外した状態ですか?

    キャンセル

  • aiueoaiueoaiue

    2018/06/10 23:56

    はいその通りです。

    キャンセル

  • ngsvx

    2018/06/10 23:58 編集

    あっ、すみません、さっきの質問は勘違いでした。 アプレットということですので、HTMLのソースを見せていただきたいです。

    キャンセル

回答 2

checkベストアンサー

0

work/
 ├ kuboyama/
 │ └ kubotatsu.java
 └ index.html

このようなディレクトリー構成でファイルを配置したとして(workは作業用フォルダー、名前はなんでもいい)、javaファイルにはpackage文を記述します。index.htmlの内容は下記のようにします。

index.html

<applet code="kuboyama.kubotatsu.class" width="300" height="100">
</applet>

ここで、workディレクトリー上で端末を開いて、

work>javac kuboyama\kubotatsu.java
work>appletviewer index.html

とすればアプレットを起動できませんか。

イメージ説明

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

-2

wrong name 訳:間違った名前 パッケージ名が間違っていると思います
追記
http://www.javaroad.jp/faq/faq_error2.htmlより

必要なクラスが見つからない場合に発生する例外です。必要なクラスは例外の後に表示されます(java.lang.NoClassDefFoundError:○○○ の場合、○○○が必要なクラスです。)。主な原因として、以下のようなものがあります。

ファイル名は間違っていませんか。大文字小文字も区別されます。
コマンドラインで実行する際、○○○.classと拡張子も指定して実行していませんか。実行する際は、.classは必要ありません。
クラスパスは正しく設定されていますか。
※.クラスパスに.(カレントディレクトリ)は指定されていますか。
※.必要なクラスファイル、jarファイルがクラスパスに指定されていますか。
※.Tomcatの場合、必要なjarファイルがWEB-INF/libディレクトリに設置されていますか。
クラスファイル、jarファイルの権限(読取可能)は正しく設定されていますか。
QuickTimeはインストール時、環境変数CLASSPATHを設定します。古いバージョンのQuickTimeはその際、CLASSPATHに.(カレントディレクトリ)を設定しないようです。これにより、java.lang.NoClassDefFoundErrorが発生する事例があります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    12870questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。