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

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

ただいまの
回答率

89.97%

パッケージxxxは存在しませんというエラーが出ます

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 30K+

yx18kuzAoF

score 8

高橋麻奈氏の「やさしいJava 活用編」を使って勉強しています。プログラムにこのようなエラーが出てきて困っています。

コマンドプロンプト:
cd C:¥Program Files\Apache Software Foundation¥Tomcat 7.0\webapps\YJKSample07\WEB-INF\classes >javac Sample6.java

Sample6.java:1: エラー: パッケージmybeansは存在しません
import mybeans.*;
^
Sample6.java:14: エラー: シンボルを見つけられません
CarBean cb = new CarBean();
^
シンボル:   クラス CarBean
場所: クラス Sample6
Sample6.java:14: エラー: シンボルを見つけられません
CarBean cb = new CarBean();
^
シンボル:   クラス CarBean
場所: クラス Sample6
エラー3個

//問題が起きているファイル
//ファイルの場所:C:¥Program Files\Apache Software Foundation¥Tomcat 7.0\webapps\YJKSample07\WEB-INF\classes

import mybeans.*; 
import javax.servlet.*; 
import javax.servlet.http.*;
public class Sample6 extends HttpServlet
{ 
    public void doGet(HttpServletRequest request, 
        HttpServletResponse response) throws ServletException 
    { 
        try{ 
            String tmp = request.getParameter("cars"); 
            String carname = new String(tmp.getBytes("8859_1"), "JISAutoDetect"); 

            CarBean cb = new CarBean(); 
            cb.setCarname(carname); 
            cb.makeCardata();
            request.setAttribute("cb",cb); 
            ServletContext sc = getServletContext(); 

            if(carname.length() != 0){ 
                sc.getRequestDispatcher("/Sample6.jsp") .forward(request, response); 
            } 
            else{ 
                sc.getRequestDispatcher("/error.html") .forward(request, response); 
            } 
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}


//JavaBeansのファイル
//ファイルの場所:C:¥Program Files\Apache Software Foundation¥Tomcat 7.0\webapps\YJKSample07\WEB-INF\classes\mybeans

package mybeans; 
import java.io.*; 
public class CarBean implements Serializable
{ 
    private String carname; 
    private String cardata;

    public CarBean() 
    { 
        carname = null; 
        cardata = null; 
    } 

    public void setCarname(String cn) 
    {
        carname = cn;
    } 
    public String getCardata() {
        return cardata;
    } 
    public void makeCardata() {
        cardata = "車種:" + carname;
    } 

}


環境設定
CLASSPATH:
C:¥Program Files¥Java¥jdk1.8.0_91¥db¥lib¥derby.jar;C:¥Program Files\Apache Software Foundation¥Tomcat 7.0¥lib¥servlet-api.jar;.

補足1:
コマンドプロンプトでjavacを使ってコンパイルをしています。

補足2:
ファイルの配置図は次のようになっています。
classes 
|
|---Sample6.java
|
|
|
|
|---mybeans---CarBean.java

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

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

  • KSwordOfHaste

    2016/12/12 22:41

    コマンドプロンプトでjavacを使ってコンパイルしているのか何らかの開発ツール(Eclipse, IntelliJ IDEA, NetBean等々)を使っているのか記載しましょう。

    キャンセル

回答 1

checkベストアンサー

+1

javaのプログラムをコンパイルする際、javacが「パッケージの起点となるディレクトリーがどこか」を正しく知らないと他のパッケージをうまくimportできずコンパイルに失敗します。

デフォルトではjavacを起動したディレクトリーが「パッケージの起点」と仮定されるようです。このためもしあなたが"C:\"でjavacを起動すると、Sample6.javaの1行目のimport mybeans.*はC:\mybeans\の下にjavaソースがあると解釈されますがそこにソースがないと「Sample6.java:1: エラー: パッケージmybeansは存在しません」というエラーになるわけです。

対処方法としては

  • javacをパッケージの起点のディレクトリで起動する
    cd "C:¥Program Files\Apache Software Foundation¥Tomcat 7.0\webapps\YJKSample07\WEB-INF\classes"
    としてから
    javac Sample6.java
    とすればうまくいくのではないでしょうか?

  • javacのオプションを使う
    javac -helpとしてみてください。そこにでてくる-sourcepathというオプションを使ってみてください。

なお、ソースの編集、コンパイル、デバッグを効率よく行うためにはできればIDE(Eclipse, IntelliJ, NetBeanといったもの)の導入を検討するとよいと思います。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

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

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