はじめてのパッケージの使い方
- 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) } }
- saekija
- お礼率72% (31/43)
- Java
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
-classpath オプションでクラスパスを適当に指示してやってください.
関連する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は見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!
- 締切済み
- Java
- 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は見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!
- 締切済み
- Java
- 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
お礼
回答ありがとうございました。 -classpath オプションで解決しました。 http://www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html