はじめてのパッケージの使い方

このQ&Aのポイント
  • JAVAでのパッケージの使い方について教えてください。
  • カレントディレクトリPackageBから別ディレクトリのPackageAをインポートすることは可能でしょうか?
  • PackageA/ExPackage2A.javaファイルとPackageB/ExPackage2B.javaファイルの使用方法について教えてください。
回答を見る
  • ベストアンサー

はじめてのパッケージの使い方

JAVAでのパッケージの使い方について 教えて下さい。 下記を参考にしました。 Javaの道 > Java基本 > パッケージ -2.パッケージの作成 http://www.javaroad.jp/java_package2.htm サンプルにある通りコンパイルをすると うまく行くのですが カレントのディレクトリを変更すると どうすればいいのかわかりません。 知りたいことは カレントディレクトリPackageBから 別ディレクトリのPackageAをインポートすることは可能でしょうか? やってみた結果は以下となります。 PackageB>javac ExPackage2B.java ExPackage2B.java:3: パッケージ PackageA は存在しません。 import PackageA.ExPackage2A; //(4) ^ ExPackage2B.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2A 場所 : PackageB.ExPackage2B の クラス ExPackage2A ex = new ExPackage2A(); //(6) ^ ExPackage2B.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2A 場所 : PackageB.ExPackage2B の クラス ExPackage2A ex = new ExPackage2A(); //(6) ^ エラー 3 個 PackageA/ExPackage2A.javaファイル package PackageA; //(1)パッケージPackageAの定義 public class ExPackage2A { //(2)publicなクラスExPackage2Aの定義 public void showClass() { System.out.println("クラスExPackage2Aです。"); } } PackageB/ExPackage2B.javaファイル package PackageB; //(3)パッケージPackageBの定義 import PackageA.ExPackage2A; //(4) public class ExPackage2B { //(5) public static void main(String[] args) { ExPackage2A ex = new ExPackage2A(); //(6) ex.showClass(); //(7) } }

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

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

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

-classpath オプションでクラスパスを適当に指示してやってください.

saekija
質問者

お礼

回答ありがとうございました。 -classpath オプションで解決しました。 http://www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html

関連するQ&A

  • パッケージの仕方について

    //ファイル1 // testPackageパッケージとして定義 package testPackage; public class PackageDemo{ public static void main(String args[]){ testPackage.A a = new testPackage.A(); a.a1(); } } //ファイル2 package testPackage; public class A{ public void a1(){ System.out.println("a1"); } } という、JAVAファイルを2つ作り、デスクトップの「testPackage」というディレクトリの中に2つとも格納しました。 C:\Documents and Settings\Administrator\デスクトップ\testPackage>javac PackageDemo.java と実行したところ 「PackageDemo.java:6: シンボルを解決できません。 シンボル: クラス A 場所 : testPackage の パッケージ testPackage.A a = new testPackage.A(); ^ PackageDemo.java:6: シンボルを解決できません。 シンボル: クラス A 場所 : testPackage の パッケージ testPackage.A a = new testPackage.A(); エラー 2 個」というエラーが発生しました。どのように対処すれば良いでしょうか?分かる方はぜひご指導ください。お願いします。

    • ベストアンサー
    • Java
  • 同一パッケージ内の継承について

    同一パッケージ内で継承したクラス Test2.java をコンパイルすると「シンボルを見つけられません シンボル:クラス Test1」とエラーになります。 --------Test1.java------- package test; public class Test1{ メソッド } ------------------------- --------Test2.java------- package test; public class Test2 extends Test1{ メソッド } ------------------------- Test1.java,Test2.javaとも同一フォルダ(D:\java\test)にあります。 ちなみにカレントディレクトリをD:\java\testにして javac Test2.java でコンパイルしようとしています。 同一パッケージ内のクラスを継承するというのはおかしなことなんでしょうか?また、コンパイルの仕方もあわせてご教示願えれば助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • package宣言のディレクトリ構造

    はじめまして、Java初心者な質問です。 package宣言するときの、ディレクトリの構造がどうあるべきか?という質問なのですが、 例えばカレントディレクトリが /home/test/java にあるとして ----------// ClassA.java //----------- package a.b; public class ClassA { /** コンストラクタ */ public ClassA() { } } とした場合、 ClassA.javaファイルとClassA.classはどこに保存されるべきなのでしょうか? 参考書などによると 「aディレクトリ内のbディレクトリ」と書いてあるのですが、どこから見てのaディレクトリ内のbディレクトリなのでしょうか? この場合だと、/home/test/java/a/b/ClassA.java という事なのでしょうか、、? それだったらpackage宣言が package home.test.java.a.b; になるような気がして、困惑しています。 よろしくお願いします><

    • ベストアンサー
    • Java
  • packageについて

    以下のことでどうしてもエラーが出てしまうのですが、 package jp.co.se.app.test.a; public class a1{ //メソッド public void go(){ System.out.println("hoge"); } } package jp.co.se.app.test.b; import jp.co.se.app.test.a.a1; public class main{ public static void main(String [] args){ a1 aa = new a1(); aa.go(); } } a1クラスはもちろんコンパイルできますが、 mainクラスでは、シンボルを解釈できません:a1 と出てしまいます。 c:\jp.co.se.app.test.b>javac -classpath c:\jp main.java なにが原因なんでしょうか? どなたか教えてください!

    • ベストアンサー
    • Java
  • パッケージ内でコンパイルできない

    パッケージを作成して,以下のようなディレクトリ構成にしました. . ├── Sample.java └── vehicle   ├── MiniCar.java   ├── SuperCar.java   └── Vehicle.java vehicleディレクトリ内で $ javac SuperCar.java このようにコンパイルしました.ですが, SuperCar.java:3: シンボルを見つけられません。 シンボル: クラス Vehicle public class SuperCar extends Vehicle { ^ エラー 1 個 このようなエラーが出力されました. 同じディレクトリにあれば,ファイルを見つけに行ってくれると思いましたが, なぜコンパイルできないのでしょうか? #ちなみに,階層を1つ登って #$javac Sample.java #これはコンパイルできて,実行もできました. -- Sample.java -- import vehicle.*; public class Sample {    public static void main(String[] args) {      MiniCar mini = new MiniCar(2);      SuperCar scar = new SuperCar("Red");    } } -- MiniCar.java -- package vehicle; public class MiniCar extends Vehicle {   int num;   public MiniCar(int num) {      super(5,10);      this.num = num;   } } -- SuperCar.java -- package vehicle; public class SuperCar extends Vehicle {   String color;   public SuperCar(String color) {      super(10, 20);      this.color = color;   } } -- Vehicle.java -- package vehicle; public class Vehicle {   private int wheel;   private int wheelDiameter;   public Vehicle(int wheel, int wheelDiameter) {      this.wheel = wheel;      this.wheelDiameter = wheelDiameter;   } }

    • ベストアンサー
    • Java
  • javac が実行できません。。

    以下はMain.classです。 package createMaster.util; import createMaster.util.Read; public class Main { public static void main(String[] args) { Read read = new Read(); read.execute(); } } 以下はRead.javaです。 package createMaster.util; public class Read { public void execute(){ System.out.println("okokokok"); } } javac Read.javaをして javac Main.javaを実行すると 下記のエラー出力されます。 Main.java:3: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util の パッケージ import createMaster.util.Read; ^ Main.java:12: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util.Main の クラス Read read = new Read(); ^ Main.java:12: シンボルを見つけられません。 シンボル: クラス Read 場所 : createMaster.util.Main の クラス Read read = new Read(); ^ エラー 3 個 いったいなぜでしょうか。。。。 御存じの方はお答えて頂戴。。

    • ベストアンサー
    • Java
  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    # 2342062 ではお世話になりました。もう少し質問を明確にします。よろしくお願いします!! CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main { public static void main(String[] args) { Sub x = new Sub(); x.test(); } } --- Sub.java --- public class Sub { public void test() { System.out.println("Sub !"); } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • CLASSPATHに二つのディレクトリ設定するとエラーが出る?

    CLASSPATHを二つのディレクトリを設定するとエラーが出てしまいます。 理由が分からないので、お願いします! 【状況】 同じディレクトリに 次の2つのファイルがあります。 --- Main.java --- public class Main {  public static void main(String[] args) {   Sub x = new Sub();  x.test();  } } --- Sub.java --- public class Sub {  public void test() {   System.out.println("Sub !");  } } 【再現手順】 (1) デフォルトの CLASSPATH は空です。この状態でコンパイルしても問題ありません。 $ echo $CLASSPATH $ javac Main.java $ java Main Sub ! (2) CLASSPATH に . を設定します。この状態でコンパイルしてもやはり問題ありません。 (3) ところが、CLASSPATH にカレントディレクトリ「 . 」ともう一つのディレクトリ(何もファイルがありません)を設定してコンパイルすると、次のようにエラーが出てしまいます。 $ export CLASSPATH=.:tmp $ javac Main.java Main.java:3: シンボルを見つけられません。 シンボル: クラス Sub 場所 : Main の クラス Sub x = new Sub(); ^ ---------------- とりあえず、カレントディレクトリはCLASSPATHに指定してあるので、Sub.classは見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • packageとimportの関係のコンパイルエラー

    現在JAVAの勉強をしております。 サンプルソースを入力しながら行っております。 カレントディレクトリでコンパイルは正常にできました。 しかし、「packageとimport」の処理を追加しファイルを ディレクトリに移したところうまくコンパイルが通らなく なりました。 パスの間違えかとも思いつつ色々調べているのですが、原因 がつかめません。 検索サイトを使って色々な事例を見てみたのですが、解決 出来ませんでした。 すみませんが、ご指導のほどお願いします。 詳細は下記の通りです。 漏れなどありましたらご指摘していただければ補記します。 JDK:1.3.1 OS:Windows2000ProSP2 ------------------------------------------------------ ディレクトリ D:\JAVAPRESS └─jp └─co └─gihyo └─javapress ├─test │ ATMTest.java │ └─account Account.java CommissionAccount.java コンパイル D:\JavaPress\jp\co\gihyo\javapress\test>javac -classpath D:\JavaPress\Account ATMTest.java ATMTest.java:2: シンボルを解釈処理できません。 シンボル: クラス ATMFrame 位置 : atm の パッケージ import jp.co.gihyo.javapress.atm.ATMFrame; パッケージ ATMTest.javaの内容 package jp.co.gihyo.javapress.test; import jp.co.gihyo.javapress.atm.ATMFrame; import jp.co.gihyo.javapress.account.*; class ATMTest { Account.javaの内容 package jp.co.gihyo.javapress.account; public class Account {

    • ベストアンサー
    • Java
  • 同一パッケージにあるクラスが見つからないエラー

    Tomcatとeclipseを用いてjspによるウェブアプリ開発の勉強をしているものです。 tagsrch.java内のメソッドに、同一パッケージ(フォルダ名:mangasearch)内のmangalist.javaで定義したmangaクラスというクラスを使いたいのですが、以下のように、シンボルが見つけられないというエラーが出てしまいます。 C:\(中略)\mangasearch>javac tagsrch.java tagsrch.java:11: エラー: シンボルを見つけられません public static List<manga> searchByKey(String k[]) throws IOException{ ^ シンボル: クラス manga 場所: クラス tagsrch tagsrch.java:14: エラー: シンボルを見つけられません manga[] list = new manga[cnum]; 同一パッケージ内に置かれている以上、tagsrch.javaにおいてmangaクラスが使えるはずだと思います。 ですが、いろいろなサイトを参考にして試してもmangaクラスが見つからないまま、tagsrch.javaがコンパイルできません。 初歩的質問で申し訳ありませんが、よろしくお願いいたします。 -参考- 1.いろいろ試したこと  1-1.カレントディレクトリを保存している場所より1つ上の場所でコンパイルする。  eclipseでtomcatプロジェクトを作成したため、どのクラスファイルにもpackage mangasearch;が含まれていました。なので1-1.を行い「javac パッケージ名/ファイル名」でコンパイルしてみました。  1-2.クラスパスを入れてコンパイルしてみる。  同一パッケージ内なので、この必要はないはずですが、  C:\(中略)\mangasearch>javac -classpath C:\(中略)\mangasearchでコンパイルしてみました。   下記のURLを参考にこの対策を講じましたが、エラーは変わりませんでした。  1-1.1-2.の参考URL:http://okwave.jp/qa/q2520327.html  1-3.メソッドをmangalist.java(mangaクラス)上で定義してしまう。  分割をあきらめ、tagsrch.java上のメソッドをmangalist.javaのmangaクラス上に定義してみました。 publicつけたままだと、 C:\(中略)\mangasearch>javac mangalist.java mangalist.java:76: エラー: クラスtagsrchはpublicであり、ファイルtagsrch.javaで宣 言する必要があります となったため、publicをとりました。するとコンパイルは出来ましたが、おそらく異なるパッケージからは使えないクラスとなったため、jsp上でアクセスできないというエラーが発生しました。 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.IllegalAccessError: mangasearch/tagsrch このため、分割してtagsrch.javaを宣言する必要があり、1-3.の対策では最初にあげたmangaクラスを認識する問題に帰着すると思われます。 2.mangalist.java/tagsrch.javaについて mangalist.javaのコンパイルはできています。 mangalist.javaは、ただ単にmangaクラスとそれに付随するフィールド、コンストラクタを記述しただけのファイルです。 ■mangalist.java package mangasearch; class manga{ フィールド名 ・・・    manga(){    //コンストラクタ    } } ■tagsrch.java public class tagsrch extends manga{ メソッド{     } }

    • ベストアンサー
    • Java

専門家に質問してみよう