• ベストアンサー

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
  • 回答数4
  • ありがとう数2

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

  • ベストアンサー
回答No.2

C:\>java -cp c:\ jp.co.se.app.test.b.main でいけると思います。だいぶ昔にやったので、間違ってるかもしれません。 考え方としては、JAVA実行マシンにc:\のクラスパスを通してやれば、後はパッケージ階層+実行クラスでよいと思いました。 コンパイルの時は、Javaファイルのところまで、作業ディレクトリを持っていく必要がありますが、実行時は、クラスパスさえ通してあれば、パッケージ階層+実行クラスでできます。作業ディレクトリがどこであっても良いです。

saya129
質問者

補足

すみません・・・、クラスパスの通し方を教えてください・・・。

その他の回答 (3)

  • yuji
  • ベストアンサー率37% (64/169)
回答No.4

回答とは直接関係ありませんが、 クラス名の先頭は英大文字にするようにしましょう。

参考URL:
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/CodeConventions.doc8.html#367
saya129
質問者

お礼

勉強になりました! ありがとうございます!

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.3

> クラスパスの通し方を教えてください No.2 さんの回答で -cp c:\ と書かれてある箇所がクラスパスを指定している部分です。 なお、-cp は省略形で、-classpath と同じです。

saya129
質問者

お礼

そうだったんですね・・・。 ありがとうございます!

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

>c:\jp.co.se.app.test.b>javac -classpath c:\jp main.java を >c:\jp\co\se\app\test\b>javac -classpath c:\ main.java としてもだめでしょうか?

saya129
質問者

補足

すみません、>c:\jp.co.se.app.test.b>は書き間違いで c:\jp\co\se\app\test\b>になってましたが、 javac -classpath c:\ main.javaでコンパイルするとうまいくいきました! けど・・・、実行はどう指定してやればいいのでしょうか・・・?

関連するQ&A

  • 無名パッケージからのインポート

    Javaの初学者です。 無名パッケージ内のクラスを、他のパッケージ中から呼びたいのですが、うまくいきません。 Test/src/Test.java ---- public class Test { public int m1; public Test() { m1 = 1; } } ---- という既存のプロジェクトがあるとします。 このプロジェクト内のTest.javaを利用したいと考えたとき、例えば、 Test2/src/Test2.java ---- import Test; public class Test2 { public static void main(String[] args) { Foo foo = new Foo(); System.out.println(foo.m1); } } ---- はうまくいきます。 ですが、Test2プロジェクトを Test2/src/test2/Test2.java ---- package test2; import Test; public class Test2 { public static void main(String[] args) { Foo foo = new Foo(); System.out.println(foo.m1); } } ---- のようにするとうまくいきません。 package test2の中から、外の無名パッケージのTestクラスを使用するには、どのようにすればよいでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • javaのpackageのMainとは?

    古い本の初心者プログラムでは、 class Hello{ public static void main(String[] args){ System.out.println("Hello!"); } } だけなんですが、統合環境の Intellij IDEAですと、 package com.company; public class Main { public static void main(String[] args) { // write your code here } } となっていて、mainメソッドを含むクラスのMainを含むpackageが必要になっています。どうしてクラスMainは他のpackageで宣言されてないとならないのですか?

    • ベストアンサー
    • 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
  • サブパッケージについて

    jp.co.checkに格納したCheckDataクラスを jp.co.dataのmainメソッドで呼び出したいのですが、 C:\j\jp\co\alpha\subject>javac data\ex31.java data\ex31.java:7: check.CheckData にアクセスできません。 クラスファイル .\check\CheckData.java は不正です。 ファイルにクラス check.CheckData が含まれていません。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 check.CheckData a = new check.CheckData(); というエラーメッセージが出ます。 作成したソースは package jp.co.data; public class ex31 { public static void main(String args[]) { int x = 333; check.CheckData a = new check.CheckData(); a.checkNum(x); } } これと以下の package jp.co.check; public class CheckData { public int checkNum(int a) { if(a > 0) System.out.println("true"); } } 2つです、どなたか教えてください。

  • アクセス修飾子とパッケージについて

    1:package test1; 2:public class Test1 { 3: static int x = 42; 4:} 1:package test2; 2:public class Test2 extends Test1 { 3: public static void main(String[] args) { 4: System.out.println("x = " + x); 5: } 6:} このようなプログラムにおいて、どこでエラーが起きるのかという問題なのですが、自分としては import test1.* としてTest1クラスを拡張する必要がある為に、Test2の2行目でコンパイルエラーが起こると思うのですが、他の方にはTest1の3行目でint xをpublic指定しておかないと、パッケージ外から、アクセスすることができないと指摘されました。実際はどこでエラーが起こるのでしょう??

    • ベストアンサー
    • 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 // 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
  • 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は見つかるはずだと思うのですが、なぜエラーが出るのでしょうか? よろしくお願いします!!

  • CLASSPATHと環境変数について

     Java初心者です、宜しくお願いします。  SJC-Pの問題です、以下の問題の意味が分かりません。 <問題>  現在CLASSPATH環境変数に設定されているパスが/AA/BBとします。  Testクラスが/AA/BB/CC/DDにあり、カレントディレクトリが/AAである場合、 次のプログラムTestが正しく実行される回答を選べという問題があります。  ===================================================  Package CC.DD ;  public class Test {   public static void main (String[] args) {  System . out . print(“java”) ;  }  }  ===================================================  答えは「java CC . DD . Test」なのですが、「現在CLASSPATH環境変数に設定されている パスが/AA/BBとします。」という意味が理解できません。  「現在CLASSPATH環境変数に設定されているパス」とはどのような意味でしょうか。  現在フォルダは、/CC/DDしか作成されていないという意味でしょうか、それにしても、 設問は「Testクラスが/AA/BB/CC/DDにあり」と書かれていることから、既にCC/DDフォルダ は、 BBフォルダの直下に作成されていると考えるのが正しいと思うのですが。  そもそも、「現在CLASSPATH環境変数に設定されているパス」とは、どのような意味を持つ のでしょうか。  以上宜しくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう